题目:
代码(首刷自解 day6):
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int n=nums.size();
int right=0,left=0;
while(right<n){
if(nums[right]!=0) swap(nums[left++],nums[right]);
right++;
}
}
};
这个题那么多天来史无前例地花了3分钟做完了,泪目
代码(二刷自解 2024年3月2日)
class Solution {
public:
void moveZeroes(vector<int>& nums) {
// 双指针
int slow = 0;
int fast = 0;
// 遍历 把非0移到前面
int zeroNum = 0;
while (fast != nums.size()) {
if (nums[fast] != 0) {
nums[slow] = nums[fast];
++slow;
}
if (nums[fast] == 0) ++zeroNum;
++fast;
}
for (int i = nums.size() - 1; i >= 0 && zeroNum != 0; --i) {
nums[i] = 0;
--zeroNum;
}
}
};