算法之——去除數組中的重復元素
阿新 • • 發佈:2017-10-30
cti pre 去重 value 排好序 配額 ons logs 更新
數組去重的方法有很多,下面介紹兩種算法:
1.哈希去重
function quchong(arr){ var hash = []; // 哈希做判斷 var t = []; //存儲新的數組 for (var i = 0; i < arr.length; i++) { var item = arr[i]; if (!hash[item]) { t.push(item); hash[item]= true; } } console.log(t); } quchong([1,2,3,5,2,3]);
2. 去除有序數組中的重復元素
給定一個已經排序好的數組,刪除重復的元素,得到一個每個元素只顯示一次的新數組,返回值為新數組的長度。 不要為另一個數組分配額外的空間,您必須使用常量內存來執行此操作。例如,
給定輸入數組nums = [1,1,2], 去重後的數組在結果長度後的內容無關緊要,[1,1,2]返回2,數組更新為[1,2,2]是正確的。代碼如下:
思路:
- 當數組長度為0或者1時,直接訪問長度值即可,不存在重復元素。
- 如果超過1,則對數組進行遍歷,使用index變量指向數組更新位置,i變量指向數組遍歷位置。
- 如果nums[inde] != nums[i]成立,則先移動index,然後更新,否則不更新。
- 返回值index少加了一次,故而為index+1
function removeDuplicates(arr) { if (arr.length == 0 || arr.length == 1) return arr.length; var index = 0; for (var i = 0; i < arr.length; i++) { if (arr[index] != arr[i]) { index++; arr[index] = arr[i]; } } console.log(arr); //(7) [1, 2, 3, 5, 3, 5, 5]
return index+1;
}
var arr = [1,2,3,2,3,5,5].sort(function(a,b){
return a - b; }); // 數組先排好序號;[1,2,2,3,3,5,5] console.log(removeDuplicates(arr)); // 4
算法之——去除數組中的重復元素