LeetCode 026 刪除排序陣列中的重複項

2021-10-10 22:05:15 字數 1172 閱讀 6950

給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o(1) 額外空間的條件下完成。

示例 1:

給定陣列 nums = [1,1,2],

函式應該返回新的長度 2, 並且原陣列 nums 的前兩個元素被修改為 1, 2。

你不需要考慮陣列中超出新長度後面的元素。

示例 2:

給定 nums = [0,0,1,1,1,2,2,3,3,4],

函式應該返回新的長度 5, 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4。

你不需要考慮陣列中超出新長度後面的元素。

利用快慢指標, 快指標用於找出不重複的項, 慢指標用於給陣列最前幾個元素複製為不重複元素

舉例1, 1, 2, 2, 3

慢指標i = 0, 快指標j = 1(索引)

判斷兩個索引所指元素, 都為1, 於是j++跳過重複元素

此時i指向1,j指向2, 不相等則nums[++i] = nums[j++]將陣列改為1, 2, 2, 2, 3

隨後i指向2,j指向2, 於是j++跳過重複元素

最後i指向2,j指向3, 不相等則nums[++i] = nums[j++]將陣列改為1, 2, 3, 2, 3

隨後j越界結束, i為2, 為不重複個數 - 1, 所以返回i + 1

class

solution

// 定義快慢指標

int i =

0, j = i +1;

// 當快指標未越界時

while

(j < nums.length)

else

}// 跳出迴圈時i索引為不重複元素個數 - 1

return i +1;

}}

LeetCode 026 刪除排序陣列中的重複項

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...

Leetcode題解026 刪除排序陣列中的重複項

給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...

leetcode刪除排序陣列的重複項

是題目描述 最開始想到的是使用雙重for迴圈 def removeduplicates nums type nums list int rtype int for i in range len nums 1 first nums i for j in range i 1,len nums if nu...