1. 程式人生 > >算法之——去除數組中的重復元素

算法之——去除數組中的重復元素

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

算法之——去除數組中的重復元素