刪除有序陣列中的重複項

2022-09-19 18:51:10 字數 1013 閱讀 5488

【題目描述】

給你乙個有序陣列 nums ,請你原地刪除重複出現的元素,使每個元素只出現一次 ,返回刪除後陣列的新長度。

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

【示例 1】

輸入:nums = [1,1,2

]輸出:

2, nums = [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

]解釋:函式應該返回新的長度

5 , 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4 。不需要考慮陣列中超出新長度後面的元素。

【題目分析】

題目已說明是有序陣列,且nums陣列已按公升序排列,則重複的元素一定出現在附近。

陣列可能為空,需要對陣列進行判空操作。

要特別注意的是,題目要求使用o(1)的空間複雜度,即必須在原陣列上操作,不能建立新陣列用於儲存。

考慮使用雙指標將所有不重複的元素移動到陣列的最左邊,然後輸出指標下標。

設定 i=0 和 j=1 的兩個指標,比較 i 和 j 位置的元素是否相等。

如果相等,j 後移 1 位

如果不相等,將 j 位置的元素複製到 i+1 位置上,i 後移一位,j 後移 1 位

重複上述過程,直到 j 等於陣列長度。

返回 i + 1,即為新陣列長度。

【實現**】

1

class

solution else

else15}

16return i+1;17}

18}19 }

26 刪除有序陣列中的重複項

題目描述 給你乙個有序陣列 nums 請你原地刪除重複出現的元素,使每個元素只出現一次 返回刪除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。說明 為什麼返回數值是整數,但輸出的答案是陣列呢?請注意,輸入陣列是以 引用 方式傳遞的,這意...

力扣 26 刪除有序陣列中的重複項

26.刪除有序陣列中的重複項 給你乙個有序陣列nums,請你原地 刪除重複出現的元素,使每個元素 只出現一次 返回刪除後陣列的新長度。說明 為什麼返回數值是整數,但輸出的答案是陣列呢?請注意,輸入陣列是以 引用 方式傳遞的,這意味著在函式裡修改輸入陣列對於呼叫者是可見的。你可以想象內部操作如下 nu...

80 刪除有序陣列中的重複項(快慢指標)

給你乙個有序陣列 nums 請你 原地 刪除重複出現的元素,使每個元素 最多出現兩次 返回刪除後陣列的新長度。不要使用額外的陣列空間,你必須在 原地 修改輸入陣列 並在使用 o 1 額外空間的條件下完成。說明 為什麼返回數值是整數,但輸出的答案是陣列呢?請注意,輸入陣列是以 引用 方式傳遞的,這意味...