class Solution {
public:
void moveZeroes(vector<int>& nums) {
int first=0;
while(first<nums.size()&&nums[first])
first++;
int second=first+1;
while(1)
{
while(second<nums.size()&&nums[second]==0)
second++;
if(second>=nums.size())
break;
std::swap(nums[first++],nums[second++]);
}
//下面这种方法不符合题目要求:最少操作次数。
/*int j=0;
for(int i=0;i<nums.size();i++)
if(nums[i])
nums[j++]=nums[i];
while(j<nums.size())
nums[j++]=0;*/
/*int first=0;
int second=0;
while(1)
{
while(first<nums.size()&&nums[first])
first++;
if(second<=first)
second=first+1;
while(second<nums.size()&&nums[second]==0)
second++;
if(second>=nums.size())
break;
std::swap(nums[first++],nums[second++]);
}*/
}
};
283. Move Zeroes
最新推荐文章于 2021-01-10 04:51:27 发布