• 边工作边刷题: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
    
    
  • 相关阅读:
    React组件的生命周期
    React页面路由
    元空间和直接内存
    类加载问题
    GC调优与jvm参数问题
    常用限流策略——漏桶与令牌桶介绍
    sqlx库使用
    Go操作MySQL
    swagger生成接口文档
    Go性能调优
  • 原文地址:https://www.cnblogs.com/absolute/p/5690320.html
Copyright © 2020-2023  润新知