把数组中的0移动到数组末尾

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

#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;
} 
全部评论

相关推荐

小鹏、大疆、米哈游、MinMax小鹏上午投的下午就约面,进度未免也太快了
蛇年行大运fff:哥们 盗贴有意思吗,我发xhs上的给你搬过来了😅😅😅
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务