美文网首页
每周一题 | 移动零

每周一题 | 移动零

作者: Eroc | 来源:发表于2020-12-15 09:09 被阅读0次

    问题

    给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    示例:

    输入: [0,1,0,3,12]
    输出: [1,3,12,0,0]

    说明:

    1. 必须在原数组上操作,不能拷贝额外的数组。
    2. 尽量减少操作次数。

    相关标签 数组 双指针

    解题

    参考快速排序的思想,确认 0 作为中间点,将大于 0 的放在左边,小于 0 的放在右边。
    由于题目中说,非0元素的相对排序,故设置两个指针 ij ,当 num[i] != 0 ,我们就交换 num[i]num[j] 的位置。

    #python3
    class Solution:
        def moveZeroes(self, nums: List[int]) -> None:
            """
            Do not return anything, modify nums in-place instead.
            """
            i = 0
            for j in range(len(nums)):
                #当前元素!=0,就把其交换到左边,等于0的交换到右边
                if nums[j] != 0:
                    nums[j], nums[i] = nums[i], nums[j]
                    i += 1
    

    相关文章

      网友评论

          本文标题:每周一题 | 移动零

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