摘要:輸入輸出方法二得到重復(fù)出現(xiàn)過的元素組成的數(shù)組數(shù)組去重一個(gè)新的臨時(shí)數(shù)組方法三如果元素過大的話,方法三不好,因?yàn)闀?huì)遍歷很多次。
function duplicates(arr) { var newarr = []; for(var j = 0;j < arr.length;j++){ for(var i = j+1;i < arr.length;i++){ if(arr[j] == arr[i]){ newarr.push(arr[i]); } } } //return [...new Set(newarr)]; return Array.from(new Set(newarr)); }
輸入:
[1, 2, 4, 4, 3, 3, 1, 5, 3]
輸出
[1, 3, 4]
方法二:
function duplicates(arr) { //得到重復(fù)出現(xiàn)過的元素組成的數(shù)組 var newarr = []; for(var j = 0;j < arr.length;j++){ if(arr.indexOf(arr[j]) != j){ newarr.push(arr[j]); } } //數(shù)組去重 var temp = []; //一個(gè)新的臨時(shí)數(shù)組 for(var i = 0; i < newarr.length; i++){ if(temp.indexOf(newarr[i]) == -1){ temp.push(newarr[i]); } } return temp; }
方法三
https://www.nowcoder.com/questionTerminal/871a468deecf453589ea261835d6b78b 如果元素過大的話,方法三不好,因?yàn)闀?huì)遍歷很多次。而且如果原數(shù)組中的每一項(xiàng)不全是數(shù)值,得到關(guān)聯(lián)數(shù)組,那么對數(shù)組b的遍歷要做修改 function duplicates(arr) { //聲明兩個(gè)數(shù)組,a數(shù)組用來存放結(jié)果,b數(shù)組用來存放arr中每個(gè)元素的個(gè)數(shù) var a = [],b = []; //遍歷arr,如果以arr中元素為下標(biāo)的的b元素已存在,則該b元素加1,否則設(shè)置為1 for(var i = 0; i < arr.length; i++){ if(!b[arr[i]]){ b[arr[i]] = 1; continue; } b[arr[i]]++; } //遍歷b數(shù)組,將其中元素值大于1的元素下標(biāo)存入a數(shù)組中 for(var i = 0; i < b.length; i++){ if(b[i] > 1){ a.push(i); } } return a; }
方法四:
方法三改進(jìn)后 function duplicates(arr) { var obj = {}; var repeatList = []; //遍歷數(shù)組,將數(shù)組的值作為obj的索引,出現(xiàn)次數(shù)為值 arr.forEach(function(item){ if(obj[item]){ obj[item] +=1; }else{ obj[item] = 1; } }); //獲取對象自身屬性 var propertyNames = Object.getOwnPropertyNames(obj); //遍歷對象,將重復(fù)出現(xiàn)的元素取出 propertyNames.forEach(function(item){ if(obj[item] > 1){ repeatList.push(parseInt(item)); } }); return repeatList; }
方法五:
function duplicates(arr) { var result = []; arr.forEach(function(elem){ if(arr.indexOf(elem) !=arr.lastIndexOf(elem) && result.indexOf(elem) == -1){ result.push(elem); } }); return result; }
方法六
function duplicates(arr) { var a=arr.sort(),b=[]; for(var i in a){ if(a[i]==a[i-1] && b.indexOf(a[i])==-1) b.push(a[i]); } return b; }//先排序,如果后一個(gè)與前一個(gè)相等且未保存,則保存。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105432.html
摘要:前言原文地址我的博客知乎知乎專欄簡書河南前端交流群官網(wǎng)上次寫了一篇幾個(gè)讓我印象深刻的面試題一沒看過的同學(xué)可以去看哦。第八題請寫出以下正則表達(dá)式的詳細(xì)規(guī)則說明嘿嘿,正則也算我比較拿手的部分。 前言 原文地址&&我的博客知乎&&知乎專欄簡書河南前端交流群官網(wǎng) 上次寫了一篇幾個(gè)讓我印象深刻的面試題(一)沒看過的同學(xué)可以去看哦。這次文章的題目來源:這里有超過20家的前端面試題,你確定不點(diǎn)進(jìn)來看...
摘要:前言原文地址我的博客知乎知乎專欄簡書河南前端交流群官網(wǎng)上次寫了一篇幾個(gè)讓我印象深刻的面試題一沒看過的同學(xué)可以去看哦。第八題請寫出以下正則表達(dá)式的詳細(xì)規(guī)則說明嘿嘿,正則也算我比較拿手的部分。 前言 原文地址&&我的博客知乎&&知乎專欄簡書河南前端交流群官網(wǎng) 上次寫了一篇幾個(gè)讓我印象深刻的面試題(一)沒看過的同學(xué)可以去看哦。這次文章的題目來源:這里有超過20家的前端面試題,你確定不點(diǎn)進(jìn)來看...
摘要:本文只是簡單理解算法,并不會(huì)深入的討論。大部分來自數(shù)組部分。如果數(shù)組中每個(gè)元素都不相同,則返回。示例輸入輸出加給定一個(gè)由整數(shù)組成的非空數(shù)組所表示的非負(fù)整數(shù),在該數(shù)的基礎(chǔ)上加一。盡量減少操作次數(shù)。 算法(algorithm),在數(shù)學(xué)(算學(xué))和計(jì)算機(jī)科學(xué)之中,為任何良定義的具體計(jì)算步驟的一個(gè)序列,常用于計(jì)算、數(shù)據(jù)處理和自動(dòng)推理。精確而言,算法是一個(gè)表示為有限長列表的有效方法。算法應(yīng)包含清晰...
摘要:答案使用,申請一個(gè)長度為類型的,每個(gè)位置只表示或,該數(shù)組占用空間約。遍歷億個(gè)數(shù),當(dāng)前數(shù)為,落在區(qū)間,對應(yīng)。 過濾100億黑名單 題目 假設(shè)有100億個(gè)URL的黑名單,每個(gè)URL最多占用64B,設(shè)計(jì)一個(gè)過濾系統(tǒng),判斷某條URL是否在黑名單里。 要求 不高于萬分之一的判斷失誤率;額外內(nèi)存不超過30GB 答案 100億個(gè)64B的URL需要640GB的內(nèi)存,顯然直接存哈希表不合理。考慮布隆過濾...
摘要:數(shù)組元素甚至可以是對象或其它數(shù)組。它執(zhí)行的是淺拷貝,這意味著如果數(shù)組元素是對象,兩個(gè)數(shù)組都指向相同的對象,對新數(shù)組中的對象修改,會(huì)在舊的數(shù)組的相同對象中反應(yīng)出來。 JS中的數(shù)組是弱類型的,數(shù)組中可以含有不同類型的元素。數(shù)組元素甚至可以是對象或其它數(shù)組。JS引擎一般會(huì)優(yōu)化數(shù)組,按索引訪問數(shù)組常常比訪問一般對象屬性明顯迅速。數(shù)組長度范圍 from 0 to 4,294,967,295(2^...
閱讀 1395·2021-11-24 09:39
閱讀 1380·2021-11-04 16:12
閱讀 2722·2021-09-24 09:47
閱讀 3368·2021-09-01 10:50
閱讀 1508·2019-08-30 15:55
閱讀 1452·2019-08-30 15:43
閱讀 675·2019-08-30 11:08
閱讀 3609·2019-08-23 18:33