给一个数组 nums 写一个函数将 0
移动到数组的最后面,非零元素保持原数组的顺序
注意事项
1.必须在原数组上操作
2.最小化操作数
样例
给出 nums = [0, 1, 0, 3, 12]
, 调用函数之后, nums = [1, 3, 12, 0, 0]
.
反着移动,将非0的数往前移动碰到i =0或遇到另一个非0数停止,变量一遍自然所有0跑到了后面
class Solution {
public:
/**
* @param nums an integer array
* @return nothing, do this in-place
*/
void moveZeroes(vector<int>& nums) {
// Write your code here
if (nums.empty())
return;
for(int i = 0; i < nums.size(); i++)
{
if(nums[i] != 0)
{
int j = i;
while(j-1 >= 0 && nums[j-1] == 0)
{
swap(nums[j-1], nums[j]);
j--;
}
}
}
}
void swap(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
}
};