题目描述
解题
使用双指针
法一
需要移除的元素较多的情况,此时每次不相同nums[i]都会被赋值
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
j = 0
while j<len(nums):
if nums[j]!=val:
nums[i] = nums[j]
i+=1
j+=1
return i
法二
需要移除元素较少的情况,nums[i]与val当相等时,取数组最后一个值赋值给nums[i]
i = 0
j = len(nums)-1
n = len(nums)
while i<n:
if nums[i]==val:
nums[i]=nums[j]
n -= 1
j -= 1
else:
i += 1
return n