Move Zeroes
Given an array
nums
, write a function to move all0
‘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.
Two pointers
class Solution { public: void moveZeroes(vector<int>& nums) { int len = nums.size(); int i = 0, j = 0; while(j < len){ if(nums[j] == 0){ j++; } else{ nums[i] = nums[j]; i++; j++; } } while(i < len){ nums[i] = 0; i++; } } };