双指针 快慢指针移动零

快慢指针 移动数组中的0

283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

快指针找到最近的非0数

慢指针找到最近的0,保持在最左侧的0位置 

最近的非0数字,跟最左侧0的位置交换,相当于0向右移动

"每个非零值都与左指针进行了交换,而且顺序靠前的先交换到了左指针处,交换后左指针增加,后面交换过来的还是靠后的 而且左指针左边的能保证都是非零值,因此既满足非零又能保证原来顺序"

python有些操作真的不太好,三行核心代码太取巧
    for i in range(nums.count(0)):
        nums.remove(0)
        nums.append(0)
    return nums

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值