首页 > 试题广场 >

有序序列合并

[编程题]有序序列合并
  • 热度指数:758 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。

输入描述:
输入包含三行,

第一行包含两个正整数n, m(1 ≤ n,m ≤ 100),用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。

第二行包含n个整数(范围1~5000),用空格分隔。

第三行包含m个整数(范围1~5000),用空格分隔。


输出描述:
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
示例1

输入

5 6
1 3 7 9 22
2 8 10 17 33 44

输出

1 2 3 7 8 9 10 17 22 33 44
let inputNum = readline().split(' ');
let N = parseInt(inputNum[0]);
let M = parseInt(inputNum[1]);
let listN = readline().split(' ');
let listM = readline().split(' ');
let newList = [];
for(let i=0; i<N; i++){
    while(listM.length && parseInt(listN[i])>parseInt(listM[0])){
        newList.push(listM.shift());
    }
    newList.push(listN[i]);
}
while(listM.length){
    newList.push(listM.shift());
}
print(newList.join(' '));

发表于 2019-09-12 14:05:26 回复(0)

问题信息

上传者:小小
难度:
1条回答 3299浏览

热门推荐

通过挑战的用户

有序序列合并