283. Move Zeros

Given an arraynums, write a function to move all0's to the end of it while maintaining the relative order of the non-zero elements.

For example, givennums = [0, 1, 0, 3, 12], after calling your function,numsshould be[1, 3, 12, 0, 0].

Note:

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

  2. Minimize the total number of operations.

Credits: Special thanks to@jianchao.li.fighterfor adding this problem and creating all test cases.

FB Followup: 输入是一个array, 有正数和负数,题目要求将正数移动到一侧,负数移动到另一侧。

Thoughts:

Having an pointer to keep track of non-zeros and replace the original value in the array then pad the rest of space with 0

Code

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

        for(; j < nums.size();j++){
            nums[j] = 0;
        }
    }
};

FollowUp:

Last updated

Was this helpful?