Problem: 27. 移除元素
工程思想
用一些python已有的工具:
while val in nums:
nums.remove(val)
但是我们显然不要这么做对不对!
从零开始
看题目是要in place,则考虑交换咯。
要把不等于val的移到前面,则考虑把数组分成2部分,只要把等于val的全部交换到后面的部分就可以了。
这种就考虑用2个指针,i从前向后扫元素,把等于val的交换走,now_idx
从后向前走,记录等于val的位置。
不假思索的话,代码应该是这样:
# 这是错的!
def removeElement(self, nums: List[int], val: int) -> int:
now_idx=len(nums)-1 # 从后向前扫
cnt=0
for i in range(len(nums)): # i从前向后扫
if nums[i]==val:
# 交换
tmp