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:
# 交换

本文讨论了如何在Python中高效地从数组中移除指定元素(不使用内建方法),通过双指针技巧,分两步实现:一是统计等于目标值的元素数量,二是用快慢指针交换元素,保留不等于目标值的元素。最终提出改进方案,利用快慢指针简化代码并提高效率。
最低0.47元/天 解锁文章
593

被折叠的 条评论
为什么被折叠?



