代码中包含两种方法:一种是覆盖,另一种是快排思想。
详情请看灯神视频

#include<cstdio>
#include<algorithm>
using namespace std;
void moveZeros(int arr[],int n){
	int zeros=0;
	for(int i=0;i<n;i++){
		if(arr[i] != 0){
			arr[i-zeros]=arr[i];
		}else{
			zeros++;
		}
	}
	int j=n-zeros;
	while(j<n){
		arr[j]=0;
		j++;
	}
} 
void moveZeros1(int arr[],int n){
	int j=0;
	for(int i=0;i<n;i++){
		if(arr[i] != 0){
			swap(arr[i],arr[j]);
			j++;
		}
	}
}
int main(){
	int arr[]={1,7,0,2,3,0,4,8};
	moveZeros1(arr,8);
	for(int i=0;i<8;i++){
		printf("%d ",arr[i]);
	}
	return 0;
}