给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
注意事项
1.必须在原数组上操作
2.最小化操作数
样例:
给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].
#ifndef C539_H
#define C539_H
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
/*
* @param nums: an integer array
* @return:
*/
void moveZeroes(vector<int>& nums) {
// write your code here
if (nums.empty())
return;
int len = nums.size();
int l = 0, r = 1;
while (r<len)
{
if (nums[l] == 0 && nums[r] == 0)
r++;
else if (nums[l] == 0 && nums[r] != 0)
swap(nums[l++], nums[r++]);
else
{
l++;
r++;
}
}
}
};
#endif