题目:
""" 给你一个数组nums和一个值 val,你需要原地移除所有数值等于val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1)额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 """
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
while i<len(nums):
if nums[i] == val:# 删除该元素后,后面的元素会自动补位,所以后续位置依旧不变
del nums[i]
else:
i += 1 # 不等于val自动往后扫描
return nums
nums = [0,1,2,2,3,0,4,2]
val = 2
S = Solution()
result = S.removeElement(nums,val)
print(result)