zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 56

    Move Zeroes

    要点:这题2个要点:保持顺序,0要到最后,所以必须从前向后处理。基本的rule就是每遇到一个非0就和下一个位置(必然为0)交换,当然要判断是否当前就是"下一个位置”,这种情况就不用交换了。
    facebook还考过一道类似题,不需要0移到后面,也不需要保持顺序,只需要把非0移到前面即可。但需要最小化write operation。其实这是一个提示,这样heuristic就是已经在前面适当位置的就不要移动了,直接找还没到位的,所以要从后向前处理,同时每次找下一个被填的0位时不用从头找,从上次已找到的位置之后开始找。具体见http://pastebin.com/4X8Fk1P6

    class Solution(object):
        def moveZeroes(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            j = -1
            for i in xrange(len(nums)):
                if nums[i]!=0:
                    if j+1!=i:
                        nums[j+1],nums[i]=nums[i],nums[j+1]
                    j+=1
    
    
  • 相关阅读:
    Python 单向循环链表
    python 单向链表实现
    Python实现栈
    单进程-非阻塞服务器
    Nginx开发从入门到精通
    Spring入门第十五课
    Spring入门第十六课
    Spring入门第十四课
    Spring入门第十三课
    Spring入门第十二课
  • 原文地址:https://www.cnblogs.com/absolute/p/5690320.html
Copyright © 2011-2022 走看看