题目要求是使用常数大小的空间复杂度
思路:我们设置一个start指针 一个end指针
一个从队首 一个从队尾
若start所指元素等于val 使其和end所指位置对换 并将end前移
注意 此时start不能动
若start所指元素不等于val 则将start后移
当start和end重合后,start即为所求
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
length = len(nums)
if length == 1:
return 0 if nums[0] == val else 1
start = 0
end = length - 1
#for i,value in enumerate(nums):
while start <= end:
if nums[start] == val:
nums[start],nums[end] = nums[end],nums[start]
end -= 1
else:#nums[start] != val
start += 1
return start