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

2022-09-21 06:00:12 字數 1088 閱讀 2500

給你乙個 公升序排列 的陣列 nums ,請你 原地 刪除重複出現的元素,使每個元素 只出現一次 ,返回刪除後陣列的新長度。元素的 相對順序 應該保持 一致 。

由於在某些語言中不能改變陣列的長度,所以必須將結果放在陣列nums的第一部分。更規範地說,如果在刪除重複項之後有 k 個元素,那麼 nums 的前 k 個元素應該儲存最終結果。

將最終結果插入 nums 的前 k 個位置後返回 k 。

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

判題標準:

系統會用下面的**來測試你的題解:

int nums = [...]; // 輸入陣列

int expectednums = [...]; // 長度正確的期望答案

int k = removeduplicates(nums); // 呼叫

assert k == expectednums.length;

for (int i = 0; i < k; i++)

如果所有斷言都通過,那麼您的題解將被 通過。

示例 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 。不需要考慮陣列中超出新長度後面的元素。

0 <= nums.length <= 3 * 104

-104 <= nums[i] <= 104

nums 已按 公升序 排列

class

solution

//快慢指標

int slow = 1, fast = 1;

while(fast

fast++;

}return

slow;}}

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

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

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

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

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

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