class Solution:
def removeElement(self, nums, val):
"""
:type nums: List[int]
:type val: int
:rtype: int
"""
i = j = 0
while j < len(nums):
if nums[j] == val:
j = j+1
else:
nums[i]=nums[j]
i = i+1
j = j+1
return len(nums[0:i])
注意:
python中切片的用法
return的用法
len的意义
官方题解:
方法一:双指针
方法二:双指针 —— 当要删除的元素很少时
思路
现在考虑数组包含很少的要删除的元素的情况。例如,num=[1,2,3,5,4],Val=4。之前的算法会对前四个元素做不必要的复制操作。另一个例子是 num=[4,1,2,3,5],Val=4,似乎没有必要将 [1,2,3,5] 这几个元素左移一步,因为问题描述中提到元素的顺序可以更改。
算法
当我们遇到 nums[i] = val 时,我们可以将当前元素与最后一个元素进行交换,并释放最后一个元素。这实际上使数组的大小减少了 1。
请注意,被交换的最后一个元素可能是您想要移除的值。但是不要担心,在下一次迭代中,我们仍然会检查这个元素。