LeetCode 解題練習:Remove Element

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

If you like this post, please click the ads on the blog or buy me a coffee. Thank you very much.

題目原文描述 https://leetcode.com/problems/remove-element/

中文描述

給定一個整數陣列 nums 與一個整數 val,將 nums 中的所有 val 給移除,並回傳 nums 中不等於 val 的個數k有多少個。


範例一:

輸入 nums = [1, 1, 2, 5, 3, 1, 4], val = 1

輸出 k = 4, nums [2, 5, 3, 4, x, x, x]

因為 nums 不等於 1 的總共有 4 個。


範例二:

輸入 nums = [1, 1, 2, 2, 5, 3, 1, 4], val = 2

輸出 k = 5, nums [1, 1, 5, 3, 1, 4, x, x]

因為 nums 不等於 2 的總共有 5 個。


解法一:

用 Python List 的內建函式 remove。


Python Code

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        while val in nums:
            nums.remove(val)
       
        return len(nums)


解法二:

將變數 k 設為 0,用來判斷 nums 內有幾個元素是不等於 val。

若陣列元素不等於 val,就將 k 當成 nums 的索引,並更新元素的值。

可參考底下圖片動畫說明



Python Code

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        k = 0
   
        for n in nums:
            if n != val:
                nums[k] = n
                k += 1

        return k


沒有留言: