1. 程式人生 > 其它 >leecode初級演算法-刪除排序陣列中的重複項

leecode初級演算法-刪除排序陣列中的重複項

問題

給你一個有序陣列 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 }