1. 题目
给定一个数组nums,写一个函数,将0移到数组尾,并保持非0元素的相对顺序。
要求:
- 必须就地操作,不能复制数组;
- 最小化操作总次数。
2. 分析
采用类似选择排序的思想
只是此时前移的不再是min_val而是非0元素
3. 代码
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int len = nums.size();
if(len <= 1)
return;
int index = 0;
for (int i = 0; i < len; ++i) {
if (nums[i] != 0) {
swap(nums[index], nums[i]);
++index;
}
}
return;
}
};