leetCode 27. Remove Element
leetCode 27. Remove Element
題目描述
給定一個數組nums和一個值val,你需要原地移除所有數值等於val的元素,返回移除後數組的新長度。
時間複雜度為O(1),不用考慮移除後的數組順序
解題思路
可先定義好一個指針,拿來加上長度,並用for判別是否為val,最後返回指針長度
使用雙指針,快的指針去負責遍歷整個list,慢的指針去紀錄是否有遇到題目給的值,是的話就跳過,最後返回slow
Python
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
ptr = 0
for num in nums:
if num != val:
nums[ptr] = num
ptr += 1
return ptr
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
fast = slow = 0
while(fast < len(nums)):
if(nums[fast] != val):
nums[slow] = nums[fast]
slow+=1
fast+=1
return slow
Golang
func removeElement(nums []int, val int) int {
fast, slow := 0, 0
for fast < len(nums) {
if nums[fast] != val {
nums[slow] = nums[fast]
slow++
}
fast++
}
return slow
}