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
    
    
  • 相关阅读:
    EXTJS 基本使用
    EXTJS 常用控件的使用
    EXTJS 验证与表单提交
    EXTJS 常用方法
    禁用USB移动盘的方法
    常用sql 函数练习示例
    .Net 中的反射(反射特性) Part.3
    Delphi調用.NET的WebService
    c#写的串口通讯
    打印控制
  • 原文地址:https://www.cnblogs.com/absolute/p/5690320.html
Copyright © 2011-2022 走看看