题解 | #有序序列合并#

石头剪刀布

https://ac.nowcoder.com/acm/contest/27444/A

T1031-锅一(卢梓鸿)

A.有序序列合并:双指针

  • 时间复杂度:O(n+m)
  • 空间复杂度:O(1)

思路

初始化指针为两个序列的头指针,根据双指针所指的值比较大小将小值加入合并序列并指针前进一步,注意当其中一个指针到序列尾部时可以将另一个序列剩余部分直接加入合并序列。

代码

n, m = (int(i) for i in input().split())
a = [int(i) for i in input().split()]
b = [int(i) for i in input().split()]
res = []
j = k = 0
while j != n or k != m:
    if j == n:
        res = res + b[k:]
        k = m
    elif k == m:
        res = res + a[j:]
        j = n
    else:
        if a[j] > b[k]:
            res.append(b[k])
            k += 1
        else:
            res.append(a[j])
            j += 1
for i in res:
    print(i, end=" ")
全部评论

相关推荐

09-27 00:29
东北大学 Java
伟大的麻辣烫:查看图片
阿里巴巴稳定性 74人发布 投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务