第十天 Move Zeroes

作者: 业余马拉松选手 | 来源:发表于2018-08-30 00:38 被阅读6次

    第十天啦,刷的还蛮开心的
    据说21天会养成一个习惯,已经接近一半啦
    不过目前leetcod已经有727道题了,完全刷完要两年,嗯,慢慢来,不想太多,切忌好高骛远
    回到今天这道题吧

    https://leetcode-cn.com/problems/move-zeroes/description/

    把一个数组中的所有0都挪到最后去,非0元素之间是顺序还需要保持。

    如果能开个空间去做,那么就很方便了。当然如果两次循环也是可以跑出结果的,不过效率想一下就不太高。

    这里有一个相对比较巧妙的双指针方法,嗯,今天状态太差了。

    慢指针,始终指向上一个非零数字的后一个位置【好绕的概念😭】,然后快指针则不断向后扫描,找到一个非零的数字,这是把快指针的数字赋值给慢指针的位置,同时将快指针的位置设置为0。

    先贴一下AC的代码吧

    class Solution:
        def moveZeroes(self, nums):
            """
            :type nums: List[int]
            :rtype: void Do not return anything, modify nums in-place instead.
            """
            slow = fast = 0
            while fast < len(nums):
                if nums[fast] != 0:
                    if slow != fast:
                        nums[slow] = nums[fast]
                        nums[fast] = 0
                    slow += 1
                fast+=1
    

    相关文章

      网友评论

        本文标题:第十天 Move Zeroes

        本文链接:https://www.haomeiwen.com/subject/bovlwftx.html