void moveZeroes(vector<int>& nums) {
int n = nums.size();</int>

// Count the zeroes
int numZeroes = 0;
for (int i = 0; i < n; i++) {
    numZeroes += (nums[i] == 0);
}

// Make all the non-zero elements retain their original order.
vector<int> ans;
for (int i = 0; i < n; i++) {
    if (nums[i] != 0) {
        ans.push_back(nums[i]);
    }
}

// Move all zeroes to the end
while (numZeroes--) {
    ans.push_back(0);
}

// Combine the result
for (int i = 0; i < n; i++) {
    nums[i] = ans[i];
}

}
//原数组操作
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int lastnonezero=0;
for(int i=0;i<nums.size();i++)
{
if(nums[i]!=0)
{
nums[lastnonezero++]=nums[i];
}
}
for(int i=lastnonezero;i<nums.size();i++)
{
nums[i]=0;
}
return;
}
};</int>