题解 | #有序序列合并#

石头剪刀布

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=" ")
全部评论

相关推荐

点赞 评论 收藏
分享
05-27 14:57
西北大学 golang
强大的社畜在走神:27届真不用急,可以搞点项目、竞赛再沉淀沉淀,我大二的时候还在天天打游戏呢
投递华为等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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