【leetcode】27: 移除元素

這道題我看了解答感覺不是很對,因爲並沒有實現原地對數組進行修改。但還是記錄一下,這種解題方法還是很值得學習的。

題目如下:

 

解答的方法如下:

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        #原地移除元素之後,再返回當前的length
        n = len(nums)
        left = 0 # 左指針從0開始,指向下一個將要賦值的位置
        # 右指針從0開始,指向當前將要處理的元素
        for right in range(0, n):
            # 右指針指向的元素不等於val,是輸出數組的元素
            # 將右指針指向的元素複製到左指針位置,然後將左右指針同時右移
            if nums[right] != val:
                nums[left] = nums[right]
                left += 1
            # 右指針指向的元素等於val,不在輸出數組裏,左指針不動,右指針右移一位
        print(nums)
        return left

我們可以看到這個解答方法,整個數組的長度並不會發生變化,沒有做到原地修改。我懷疑這個python的解答方法是錯誤的

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章