输入:数组 nums。
要求:将所有 0移动到数组末尾,同时保持非零元素的相对顺序。
输出:操作后的数组。
思路:双指针法。
时间复杂度:O(n),空间复杂度:O(1)。
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int slow = 0;
int len = nums.size();
for (int i = 0; i < len; i++) {
if (nums[i] != 0) {
nums[slow++] = nums[i];
//也可以在此处对nums[i]赋值0,从而避免后续赋0循环
//但是执行次数上是多于两段循环的
//nums[i] = 0;
}
}
for (int j = slow; j < len; j++) {
nums[j] = 0;
}
}
};
1526

被折叠的 条评论
为什么被折叠?



