不建立新的list,返回长度
Input:[3,2,2,3] 移除值Val:3
Output:[2,2]
a)定义i作为指针,表的长度j。从0开始,如果表中的i位置值为val的话pop出去,j-1,否则i+1挪到下一位
def removeElement(self, nums: List[int], val: int) -> int:
i=0
j=len(nums)
while i<j:
if nums[i]==val:
nums.pop(i)
j-=1
else:
i+=1
return j
b)只有当nums[i]值不为val时,这个位置的值才落下来。用
nums=[0,1,2,2,3,0,4,2]测试时,最终的nums=[0, 1, 3, 0, 4, 0, 4, 2],所以需要返回nums[:j]
def removeElement(self, nums: List[int], val: int) -> int:
j=0
for i in range(len(nums)):
if nums[i]!=val:
nums[j]=nums[i]
j+=1
return j