給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 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...