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.
代码:
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n=0;
int pos=0;
for(int i=0;i<nums.size();++i)
{
if(nums[i]==0)
{
++n;
}
else
{
nums[pos]=nums[i];
++pos;
}
}
for(int i=nums.size()-1;i>nums.size()-n-1;--i)
{
nums[i]=0;
}
}
};