起因, 目的:
与昨天的第26题很类似,还是双指针。
算法题,需要大块的空闲时间。
题目来源: 27, 还是双指针
https://leetcode.cn/problems/remove-element/description/
思路参考, 写的很好:
https://leetcode.cn/problems/remove-element/solutions/434254/python-shuang-zhi-zhen-da-fa-hao-a-quan-guo-zui-ca/
1. 昨天写的
def solu(nums, val):
# 定义2个指针。
left = 0 # 左边, 慢指针,记录个数。
right = 0 # 右边的指针,遍历每个元素
while right < len(nums):
if nums[right] != val:
nums[left] = nums[right]
left += 1
right += 1
return left
print(solu( nums = [3,2,2,3], val = 3 ))
2. 再写一遍,换成 for 循环
# 27. 移除元素
def solu(nums, val):
# 换一种写法,试试 for 循环
n = len(nums)
left = 0 # 慢指针,也是计数器。
# right 是遍历过程中的下标,也是 快指针。
for right in range(n):
# 如果某个值是有效的。那么就保留下来, 保留到左边。
if nums[right] != val:
nums[left] = nums[right]
left += 1
return left
print(solu( nums = [3,2,2,3], val = 3 ))
老哥留步,支持一下。

1014

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



