這道題我看了解答感覺不是很對,因爲並沒有實現原地對數組進行修改。但還是記錄一下,這種解題方法還是很值得學習的。
題目如下:
解答的方法如下:
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的解答方法是錯誤的