给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12] 输出: [1,3,12,0,0]
class Solution {
public:
void moveZeroes(vector<int>& nums) {
vector<int>::iterator iter1=nums.begin();
vector<int>::iterator iter2=nums.begin();
vector<int>::iterator iter=nums.begin();
int tem=0;//用于交换
int count=0;//记录有几个0
for(int i=0;i<nums.size();i++)
{
if(nums[i]==0)
{
count++;
tem=nums[i];
nums[i]=nums[nums.size()-count];
nums[nums.size()-count]=tem;
if(iter1==iter2)//没有0
{
iter=iter1;
iter1=nums.begin()+i;
iter2=iter1;
}
else//有0
{
if(iter1+1==iter2)
{
}
}
}
}
/* 不是在原数组操作
if(nums.size()<=0)
return;
vector<int> result(nums.size(),0);
int count1=0;
int count2=nums.size()-1;
for(int i=0;i<nums.size();i++)
{
if(nums[i]!=0)
{
result[count1++]=nums[i];
}
else
result[count2--]=nums[i];
}
nums=result;
*/
}
};