leetcode 刪除排序陣列中的重複項

2021-10-08 19:56:00 字數 1462 閱讀 6682

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

不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 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。

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

解題:

第一想法,暴力解題,雙層迴圈,外層控制下標,找到重複的個數,內層移動陣列。

直接上**。

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 不需要理會新的陣...