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