1.题目

思路:双指针
分析:
指针1:遍历数组,从数组最开头遍历到结尾,目的是找出非0元素
指针2:开始指向数组最开头元素,每当指针1找到一个非0元素,就把这个元素安排到指针2对应位置上,同时指针2指向数组下一个位置。
指针2目的,给数组换血,让数组非0元素放到前面。
用count记录指针2位置,其实也可以表示数组中非0元素个数
当指针1遍历到数组末尾相当于非0元素找完了,此时用数组元素个数减去非0元素个数就是0元素个数
那么有几个0就在换血后的数组从后往前补几个就好
代码
cpp
class Solution {
public:
void moveZeroes(vector<int>& nums) {
int count=0;
for(int i=0;i<nums.size();i++){
if(nums[i]!=0){
nums[count]=nums[i];
count++;
}
}
for(int i=count;i<nums.size();i++){
nums[i]=0;
}
}
};