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.
For example, given nums = [0, 1, 0, 3, 12]
, after calling your function, nums
should be [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.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
Show Similar Problems
1 class Solution { 2 public: 3 void moveZeroes(vector<int>& nums) { 4 int i; 5 int j; 6 int cou = 0; 7 int n = nums.size(); 8 for(i = 0 ; i<n ; i++){ 9 if(nums[i] == 0){ 10 cou ++; 11 } 12 } 13 for(i = 0,j = 0; i<n; i++){ 14 if(nums[i] != 0 ){ 15 nums[j] = nums[i]; 16 j++; 17 } 18 } 19 for(;j<n;j++){ 20 nums[j] = 0; 21 } 22 } 23 };