LeetCode 283. Move Zeroes

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

v2-52892fa2711c9bcbf528e7aaac3166ed_1440w.jpg

Description



Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.


Example:


Input: [0,1,0,3,12]

Output: [1,3,12,0,0]


Note:

You must do this in-place without making a copy of the array.

Minimize the total number of operations.


描述



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


示例:

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

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


说明:

1.必须在原数组上操作,不能拷贝额外的数组。

2.尽量减少操作次数。


思路



  • 记录第一个0的位置,我们将第一个0后面的第一个非零数和第一个0替换,将记录第一个0的值自增一次.
  • 重复以上操作.


# -*- coding: utf-8 -*-
# @Author:             何睿
# @Create Date:        2019-02-07 13:55:55
# @Last Modified by:   何睿
# @Last Modified time: 2019-02-07 14:07:46
class Solution:
    def moveZeroes(self, nums: 'List[int]') -> 'None':
        """
        Do not return anything, modify nums in-place instead.
        """
        # 获取第一个0的索引
        first = 0
        while first < len(nums):
            if nums[first] == 0:
                break
            first += 1
        # 如果0已经在嘴后一个位置或者没有0
        if first >= len(nums) - 1:
            return
        # 把第一个0和0后面的非零数替换
        # 并将first自增一次,指向下一个0
        for i in range(len(nums)):
            if nums[i] and i > first:
                nums[i], nums[first] = nums[first], nums[i]
                first += 1

源代码文件在这里.




目录
相关文章
|
存储 索引
LeetCode 73. Set Matrix Zeroes
给定一个m * n 的矩阵,如果当前元是0,则把此元素所在的行,列全部置为0. 额外要求:是否可以做到空间复杂度O(1)?
101 0
LeetCode 73. Set Matrix Zeroes
|
算法 Python
LeetCode 283. 移动零 Move Zeroes
LeetCode 283. 移动零 Move Zeroes
LeetCode之Move Zeroes
LeetCode之Move Zeroes
97 0
|
索引 Python Java
LeetCode 283:移动零 Move Zeroes
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。
763 0
|
C++ Java 存储
LeetCode 73 Set Matrix Zeroes(设矩阵元素为0)(Array)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/52139263 翻译 给定一个mm x nn的矩阵matrix,如果其中一个元素为0,那么将其所在的行和列的元素统统设为0。
1079 0
LeetCode 172 Factorial Trailing Zeroes(阶乘后的零)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50568854 翻译 给定一个整型n,返回n!后面的零的个数。
610 0
LeetCode 283 Move Zeroes(移动所有的零元素)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50409676 翻译 给定一个数字数组,写一个方法将所有的“0”移动到数组尾部,同时保持其余非零元素的相对位置不变。
703 0
leetcode Set Matrix Zeroes
Question Given a m x n matrix, if an element is 0, set its entire row and column to 0.
783 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行