Problem
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.
Code
class Solution {
public:
void moveZeroes(vector<int>& nums) {
queue<int> Q;
int size = nums.size();
for (int i = 0; i < size; i++) {
if (nums[i] == 0) {
Q.push(i);
} else {
if (!Q.empty()) {
int t = Q.front();
Q.pop();
nums[t] = nums[i];
nums[i] = 0;
Q.push(i);
}
}
}
}
};