27. 移除元素

wochh發表於2024-09-18

題目描述:

給你一個陣列 nums 和一個值 val,你需要 原地 移除所有數值等於 val 的元素。元素的順序可能發生改變。然後返回 nums 中與 val 不同的元素的數量。
假設 nums 中不等於 val 的元素數量為 k,要透過此題,您需要執行以下操作:
更改 nums 陣列,使 nums 的前 k 個元素包含不等於 val 的元素。nums 的其餘元素和 nums 的大小並不重要。
返回 k

思路分析:

  • 輸入:陣列,指定刪除val
  • 輸出:刪除後所剩的元素的數量,並且陣列需要完成刪除操作
  • 條件:--

使用雙指標操作,i指標來尋找保留的元素,j指標來尋找保留元素的位置,找到後進行位置交換,這樣後面找到也不會重複操作。

錯誤總結:

  • 在編寫程式碼的時候,儘量讓一個迴圈變數只執行單一的功能,功能過多會導致邏輯混亂(編寫函式時也應該注意)
  • 要注意邊界和極端值的分析(陣列開始和結束位置)
點選檢視程式碼
//leetcode submit region begin(Prohibit modification and deletion)
func removeElement(nums []int, val int) int {
    j := 0
    //i尋找保留的元素
    for i := 0; i < len(nums); i++ {
        //找到了
        if nums[i]!= val{
            nums[j] = nums[i]
            j++
        }
    }
    return j // j 是新的陣列長度
}

相關文章