LeetCode 283 [Move Zeroes]

原题

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序

样例
给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].

解题思路

  • 第一个方法是记录一个指针指向0,每次swap的时候更新指向零的指针
  • 第二个方法是两个指针,一个指针指向零,一个指针指向非零

完整代码

# method 1
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        pos = 0  # position of "0" starts at
        for i in xrange(len(nums)):
            if nums[i] != 0:
                nums[i], nums[pos] = nums[pos], nums[i]
                pos += 1

# method 2
class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: void Do not return anything, modify nums in-place instead.
        """
        if not nums:
            return None
        
        Zero, NonZero = 0, 0
        while NonZero < len(nums):
            if nums[NonZero] == 0:
                NonZero += 1
                continue
            else:
                print nums[Zero], nums[NonZero]
                nums[Zero], nums[NonZero] = nums[NonZero], nums[Zero]

            Zero += 1
            NonZero += 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,354评论 0 33
  • Question 把数组所有的值为0的元素移到末尾 Given an array nums, write a fu...
    Sinexs阅读 4,633评论 0 1
  • 别人都叫你怪物 只是因为你 爱上了同性 别人都说你有病 想要拖出你的灵魂 用力鞭打 别人烧毁了你的彩虹 那是你与你...
    巫师的毒汤阅读 1,664评论 1 4
  • 在给变量命名时,如果想用两个或者多个单词组成一个名称,通常的做法是用下划线将单词分开,或者从第二个单词开始每一个单...
    Kevin_0417阅读 949评论 0 0
  • 我是个喜欢看书的人,但不同的是,我看的很多书都是国外的书。哪怕是学习中国的儒家文化、中国历史,也有很多书是看英文版...
    疯狂的石头哥阅读 6,929评论 39 73