Leetcode 算法题 27 移除元素

起因, 目的:

与昨天的第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  ))

老哥留步,支持一下。

请求支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

waterHBO

老哥,支持一下啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值