26. Remove Duplicates from Sorted Array
1.題意:給一個遞增排序的整數陣列nums,請你原地刪除重複元素,使得每個元素只出現一次,並返回刪除後陣列的新長度。
要求:不能使用額外陣列空間(in-place 操作)。
2.解題思路:由於陣列是已排序的,所以重複的元素一定是連在一起。
我們可以用:
- i:慢指標 → 指向「目前處理後的最後一個不重複元素」
- j:快指標 → 掃描整個陣列
當 nums[j] != nums[i] 時,代表遇到新元素:
- 把它放到 nums[i+1]
- 然後 i++
最後回傳「不重複元素的個數」=i + 1
3.範例:
輸入:nums = [1, 1, 2]
過程:
i=0, j=1 → nums[j]==nums[i] → skip
i=0, j=2 → nums[j]!=nums[i] → i=1, nums[1]=2
最後:nums = [1, 2, _]
回傳長度 = 2
輸出:2
(前兩個元素 [1,2] 為不重複結果)
4.程式碼截圖:
5.學習心得:這次選得題目是之前老師上課沒有講到的,但也屬於簡單類型的題目,確實裡面用的程式碼都是簡單的,所以這次我是自己寫的,沒想到就順利解出,這次成就感十足。