283. 移动零
2020-10-28 01:14 woshihuangrulin 阅读(71) 评论(0) 收藏 举报还是快慢指针,看了答案,感觉对快慢指针还是不够熟悉,在去除重复数字题目中很快就想到了,但是这一题没有做出来,思路就是:
快指针和慢指针同步往后走,找到0后慢指针指向了0的位置,快指针会继续往后移动,直到找到一个不为零的数,慢指针的值就会和快指针的值交换,慢指针往后移动一步,还是会指向0的值,当快指针到达尾部,完成了0值后移,同时没有改变非零值的顺序
class Solution {
public:
void moveZeroes(vector<int>& nums) {
if (nums.empty()) {
return;
}
int slow_pos = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] != 0) {
swap(nums[slow_pos++], nums[i]);
}
}
}
};
浙公网安备 33010602011771号