360笔试第二题解法

if __name__ == '__main__':
    n, m = map(int, raw_input().split())
    nums_1 = list(map(int, raw_input().split()))
    nums_2 = list(map(int, raw_input().split()))
    record_1 = [0] * m
    record_2 = [0] * m
    res = [0] * n
    for i in range(n):
        record_1[nums_1[i]] += 1
        record_2[nums_2[i]] += 1
    idx = 0
    for k in range(m-1, 0, -1):
        if idx == n:
            break
        for v in range(max(0, k-m+1), min(k, m-1) + 1):   #当组成和为k的两个数,v的搜索空间
            if record_1[v] and record_2[k-v]:
                res[idx] = k
                idx += 1
                record_1[v] -= 1
                record_2[k-v] -= 1
        k += m
        for v in range(max(0, k-m+1), min(k, m-1) + 1):
            if record_1[v] and record_2[k-v]:
                res[idx] = k
                idx += 1
                record_1[v] -= 1
                record_2[k-v] -= 1
    print ' '.join(map(str, res))
#360公司##笔试题目#
全部评论
JS 本地全跑通。。思路和  大佬们AC了的一样     结果      哎。
点赞 回复 分享
发布于 2019-08-16 07:59
ac?
点赞 回复 分享
发布于 2019-08-16 07:57
ac?
点赞 回复 分享
发布于 2019-08-16 00:14

相关推荐

04-25 18:13
五邑大学 Java
无面如何呢:用心包装一下自己的实习
点赞 评论 收藏
分享
no_work_no_life:深圳,充电宝,盲猜anker
点赞 评论 收藏
分享
评论
3
10
分享

创作者周榜

更多
牛客网
牛客企业服务