leetcode No283. Move Zeroes

Posted Dufre.WC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode No283. Move Zeroes相关的知识,希望对你有一定的参考价值。

Question

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]

Algorithm

  • 遇到0怎么处理:用一个变量记录0的个数p
  • 如何使下标index移动到正确的位置?
    • 与前面统计的0的个数有关系:index - p

Code

class Solution 
public:
    void moveZeroes(vector<int>& nums) 
        int p = 0;
        for (int i=0;i<nums.size();i++)
            if (nums[i] == 0)
                p++;
            
            else
                nums[i-p] = nums[i];
            
        
        for (int j=nums.size()-p;j<nums.size();j++)
            nums[j] = 0;
        
    
;

以上是关于leetcode No283. Move Zeroes的主要内容,如果未能解决你的问题,请参考以下文章

283. Move Zeroes

Leetcode.283 | Move Zeroes(Python)

LeetCode283:Move Zeros

leetcode 283. Move Zeroes

Move Zeroes

LeetCode 283. Move Zeroes