首页 > 试题广场 >

合并数组

[编程题]合并数组
  • 热度指数:15989 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请实现一个函数,功能为合并两个升序数组为一个升序数组

输入的格式是用逗号隔开的数字。

数据范围:输入的字符串长度满足

输入描述:
输入有多个测试用例,每个测试用例有1-2行,每行都是以英文逗号分隔从小到大排列的数字


输出描述:
输出一行以英文逗号分隔从小到大排列的数组
示例1

输入

1,5,7,9
2,3,4,6,8,10

输出

1,2,3,4,5,6,7,8,9,10

备注:
不允许使用原生的 sort、concat 等函数
跟合并两个有序链表一样的做法。

class MainActivity:

    def main(self):
        # Read the data
        nums1 = list(map(int, filter(lambda x: len(x) > 0, input().split(','))))
        try:
            nums2 = list(map(int, filter(lambda x: len(x) > 0, input().split(','))))
        except:
            nums2 = []
        # Initialization
        results = []
        ptr1 = 0
        ptr2 = 0
        # Traverse
        while ptr1 < len(nums1) and ptr2 < len(nums2):
            if nums1[ptr1] < nums2[ptr2]:
                results.append(nums1[ptr1])
                ptr1 += 1
            else:
                results.append(nums2[ptr2])
                ptr2 += 1
        if ptr1 < len(nums1):
            results += nums1[ptr1:]
        elif ptr2 < len(nums2):
            results += nums2[ptr2:]
        print(','.join(map(str, results)))


if __name__ == '__main__':
    M = MainActivity()
    M.main()
发表于 2024-09-02 17:56:40 回复(0)