leecode初級演算法-刪除排序陣列中的重複項
阿新 • • 發佈:2021-12-22
問題
給你一個有序陣列 nums ,請你 原地 刪除重複出現的元素,使每個元素 只出現一次 ,返回刪除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 O(1) 額外空間的條件下完成。 =========================================================== =========================================================== =========================================================== =========================================================== =========================================================== ===========================================================解題思路
條件:
1.有序陣列:意味著陣列已經從小到大排好序了(即使沒排好也可以先用sort進行排序)
2.不要使用額外的陣列空間:意味著必須原地修改陣列,不能利用第二個陣列來幫助過濾重複元素
我們可以定義一個索引,用來記錄位置,因為順序已經排好,所以一邊迭代,一邊和記錄的位置進行對比,若重複,就進行刪除操作
程式碼
function A(nums){ let length = 0 if(nums.length === 0) return 0 for(length; length<nums.length;){ if(nums[length-1] !== nums[length]){ length++ }else{ nums.splice(length, 1) } } return length }