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:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int cnt = 0;
int idx = 0, len = nums.size();
for (int i = 0; i < len; i++) {
if (nums[i] == 0) {
cnt++;
} else {
swap(nums[idx], nums[i]);
idx++;
}
}
while (cnt) {
nums[len - cnt--] = 0;
}
}
};
原文:http://www.cnblogs.com/ydlme/p/4903083.html