iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
自我挑戰組

Leetcode 自學系列 第 20

自學Leetcode Day20

  • 分享至 

  • xImage
  •  

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.程式碼截圖:https://ithelp.ithome.com.tw/upload/images/20251004/201692415B172HdFbe.png
    5.學習心得:這次選得題目是之前老師上課沒有講到的,但也屬於簡單類型的題目,確實裡面用的程式碼都是簡單的,所以這次我是自己寫的,沒想到就順利解出,這次成就感十足。

上一篇
自學Leetcode Day19
系列文
Leetcode 自學20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言