iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
自我挑戰組

Leetcode 自學系列 第 21

自學Leetcode Day21

  • 分享至 

  • xImage
  •  

27. Remove Element
1.題目說明:給定一個整數陣列 nums 和一個整數 val,請你原地移除所有等於val的元素,返回移除後的長度。
陣列元素的相對順序可以改變,但不能使用額外空間。
2.解題思路(雙指標法)
用兩個指標:

  • i:慢指標,代表「下個應該放非 val 元素的位置」
  • j:快指標,用來遍歷整個陣列
    當 nums[j] != val 時,就把這個元素放到前面 nums[i],然後 i++。
    當 nums[j] == val,就跳過它。
    最後回傳 i,就是移除後的新長度。
    3.範例:
    輸入:nums = [3,2,2,3], val = 3
    執行過程:
    j=0 → nums[j]==3 → skip
    j=1 → nums[j]==2 → nums[i]=2 → i=1
    j=2 → nums[j]==2 → nums[i]=2 → i=2
    j=3 → nums[j]==3 → skip
    最後:
    nums = [2,2,,]
    return 2
    輸出:2
    (前兩個元素 [2,2] 為移除後結果)
    4.比較LeetCode 26 & 27 的差異與核心思維!https://ithelp.ithome.com.tw/upload/images/20251004/20169241GZve8izout.png
    5.程式碼截圖:https://ithelp.ithome.com.tw/upload/images/20251004/20169241rk7mvt9RM6.png
    6.學習心得:這次的題目與前一題相似,只是這次不是刪重複值,而是移除特定數字,所以我利用前一題的解題絲路去推斷這一題該如何解,沒想到自己也很順利解出來,讓我有慢慢地覺得其實也不是每一題Leetcode都很難。

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

尚未有邦友留言

立即登入留言