题目
代码(首刷看解析)
这种题是在原数组上进行改动,用到了快慢指针的方法。
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int k = removeElement(nums, 0);
for(; k < nums.size(); k++) {
nums[k] = 0;
}
}
int removeElement(vector<int>& nums, int k) {
int slow = 0, fast = 0;
while(fast != nums.size()) {
if(nums[fast] != k) {
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
};
代码(9.23 二刷自解)
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int slow = 0, fast = 0;
while(fast < nums.size()) {
if(nums[fast] == 0) {
fast++;
} else {
nums[slow++] = nums[fast++];
}
}
for(; slow < nums.size(); slow++)
nums[slow] = 0;
}
};