leetcode day14 Move Zeroes

博客围绕将数组中所有0移至末端且保持非零数顺序不变的问题展开。提出两种思路,一是指定两个指针,一个指零、一个指非零,交换元素,平均复杂度不超O(n);二是官方解答,先放非零元素,再补零,作者认为该想法一般。

题目描述:将数组中所有0都放置在数组的末端,且保持前面非零数的顺序不变
思路:
1、我自己想到的思路:指定两个指针,一个指向最前面的零,一个走在前面指向非零,不断交换元素则可以到达最后,这种的平均复杂度不超过O(n)
代码:

class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        pre = 0
        nxt = 1
        while pre < len(nums)-1 and nxt < len(nums):
            if nums[pre] == 0:
                while nums[nxt] == 0 and nxt< len(nums)-1:
                    print nxt
                    nxt += 1
                nums[pre] = nums[nxt]
                nums[nxt] = 0
            nxt += 1
            pre += 1

2、是官方的解答,但我觉得不太行,就是分为两步,一步是将非零元素放到前面的位置,然后后面剩下的位置用0来补全,我觉得这种想法非常一般。嗯。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值