题解 | #有序序列合并#

有序序列合并

http://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897

//BC100 有序序列合并
#include <stdio.h>
#include <stdlib.h>

int main(void) {
	int n, m, i, j, k = 0;
	scanf("%d %d", &n, &m);
	int* arr_n = (int*)malloc(sizeof(int)*n); 
	int* arr_m = (int*)malloc(sizeof(int)*m); 
	int* ret = (int*)malloc(sizeof(int)*(m+n));
	for (i = 0; i < n; i++) {
		scanf("%d", &arr_n[i]);
	}
	for (i = 0; i < m; i++) {
		scanf("%d", &arr_m[i]);
	}
	i = 0, j = 0;
	while(1){
		ret[k++] = (arr_n[i] < arr_m[j]) ? arr_n[i++] : arr_m[j++];
		if (i == n) {
			while (j < m) {
				ret[k++] = arr_m[j++];
			}
			break;
		}
		else if (j == m) {
			while (i < n) {
				ret[k++] = arr_n[i++];
			}
			break;
		}
	}
	for (i = 0; i < n + m; i++) {
		printf("%d ", ret[i]); 
	}
	return 0 ;
}
全部评论
谢谢 最有用的答案
点赞 回复
分享
发布于 2022-03-11 09:56
最牛逼的解法,遥遥领先
点赞 回复
分享
发布于 2023-09-16 23:03 安徽
联易融
校招火热招聘中
官网直投

相关推荐

头像
03-18 09:09
Java
点赞 评论 收藏
转发
6 1 评论
分享
牛客网
牛客企业服务