給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o(1) 額外空間的條件下完成。
示例 1:
給定陣列 nums = [1,1,2],示例 2:函式應該返回新的長度 2, 並且原陣列 nums 的前兩個元素被修改為 1, 2。
你不需要考慮陣列中超出新長度後面的元素。
給定 nums = [0,0,1,1,1,2,2,3,3,4],函式應該返回新的長度 5,解題:並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4。
你不需要考慮陣列中超出新長度後面的元素。
第一想法,暴力解題,雙層迴圈,外層控制下標,找到重複的個數,內層移動陣列。
直接上**。
class
solution
int j = i +1;
while
(j<=size&&nums[j]
== nums[i]
) size =
move
(nums,j,size,j-i-1)
;}return size+1;
}//pos 是不與前面值的相同的數的下標
// end 是當前陣列實際長度即最後一位下標。
// len 是重複次數的統計
純暴力很方便簡單,就是有點慢,好傢伙,我一看快倒數第一了,這波血虧。
想了一下,對純暴力可以進行一些優化
不額外使用乙個迴圈進行重複次數的統計,
而向前移動陣列時將不等於該值的nums[j]
賦給當前下標i的後乙個位置nums[i+1]
。
也就是通過雙指標
進行操作,i指標代表重複的第乙個值下標,j代表與當前值不重複的第乙個值下標。
**如下:
舒服了。
LeetCode 陣列 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。示例 給定 nums 0,0,1,1,1,2,2,3,3,4 函式應該返回新的長度 5,並且原陣列 nu...
Leetcode題解026 刪除排序陣列中的重複項
給定乙個排序陣列,你需要在 原地 刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成 給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1...
LeetCode 從排序陣列中刪除重複項
給定乙個有序陣列,你需要原地 刪除其中的重複內容,使每個元素只出現一次,並返回新的長度。不要另外定義乙個陣列,您必須通過用 o 1 額外記憶體原地修改輸入的陣列來做到這一點。示例 給定陣列 nums 1,1,2 你的函式應該返回新長度 2,並且原陣列nums的前兩個元素必須是1和2 不需要理會新的陣...