移动零--双指针
双指针,把非零移动到前面,后面改为0
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n;
cin>>n;
vector<int> nums(n);
for (int i=0;i<n;i++) cin>>nums[i];
先动i,如果i的值不等于0,把i移到前面的j,j代表该把下一个非 0 放到哪里;
int j=0;
for(int i=0;i<n;i++){
if(nums[i]!=0) {
nums[j]=nums[i];
j++;
}}
j代表在前面放了几个非零的数,在数组中由nums[j]开始往后改写为0.
for(int k=j;k<n;k++) nums[k]=0;
for(int i=0;i<n;i++) cout<<nums[i]<<" ";
return 0;
}