题目三十八:
给一个数组 nums 写一个函数将 0
移动到数组的最后面,非零元素保持原数组的顺序
注意事项
1.必须在原数组上操作
2.最小化操作数
样例
给出 nums = [0, 1, 0, 3, 12]
, 调用函数之后, nums = [1, 3, 12, 0, 0]
.
代码:
class Solution {
public:
/*
* @param nums: an integer array
* @return:
*/
void moveZeroes(vector<int>& nums) {
// write your code here
int i,j,num=0;
for(i=0;i<nums.size();i++)
{
if(nums[i]==0)
{
num++;
for(j=i;j<nums.size()-1;j++)
{
nums[j]=nums[j+1];
}
nums[nums.size()-1]=0;
if(nums[i]==0&&i<nums.size()-num)
i--;
else if(i==nums.size()-num)
break;
}
}
}
};
思路:注意处理多个零相邻的情况