力扣283.移动零。
思想实现很简单,一个笨方法,找一个零就把他移到尾端但这样每次都要重新进行数组的整体移动。第二个方法就是用双指针进行操作,fast移动进行判0,slow用于接收非0,最后将数组尾端全部填上0。
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int nums_size=nums.size();//获取数组的长度
int slow=0,fast=0; //定义快慢指针进行遍历
while(fast<nums_size){
//快指针向前运动,如果非0元素就将其赋值给slow
if(nums[fast]!=0){
nums[slow++]=nums[fast++];
}
else fast++;
}
//slow的位置也就是第一个0开始的位置
for(slow;slow<nums_size;slow++){
nums[slow]=0;
}
}
};