題目連結:27. Remove Element
難度:Easy
給定一個 number array nums
, 以及 target value val
,讓 number array 中的數值前幾位都不等於 target val ,並且需要直接在原本的 array 上操作,不可以宣告別的變數來儲存,之後再回傳 k 代表陣列中的前幾個元素皆不等於 target val
宣告一個指標 k 用來記錄 target val 所在的位置
遍歷整個陣列
nums[i]
不等於 val
的話nums[k]
指定為當前的 nums[i]
nums[i]
等於 val
的話回傳 k
圖解可看 這裡
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
k = 0
for i in range(len(nums)):
if nums[i] != val:
nums[k] = nums[i]
k += 1
return k
曾經也寫過快慢指針法,概念其實很雷同,都會有兩個指針,一個用來記錄要被置換的位置,一個用來遍歷陣列
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
slow, fast = 0, 0
while fast < len(nums):
if nums[fast] != val:
nums[slow], nums[fast] = nums[fast], nums[slow]
fast += 1
slow += 1
else:
fast += 1
return slow