360笔试编程第二题,求大佬指点。

360笔试第二题,重排组合成最大的m进制数。
笔试完之后来了思路写了代码,求大佬们指点一下有没有问题,感谢。
import sys
import collections

params = list(map(int, raw_input().split(' ')))
n = params[0]
m = params[1]
num1 = list(map(int, raw_input().split(' ')))
num2 = list(map(int, raw_input().split(' ')))
num1 = collections.Counter(num1)
num2 = collections.Counter(num2)
print num1, num2
ans = []
for i in range(n-1,-1,-1):
    for key in num1:
        if i-key in num2:
            temp = min(num2[i-key], num1[key])
            ans.extend([i]*temp)
            num1[key] -= temp
            num2[i-key] -= temp
        if i+n-key in num2:
            temp = min(num2[i+n-key], num1[key])
            ans.extend([i]*temp)
            num1[key] -= temp
            num2[i+n-key] -= temp
    if len(ans) == m:
        break
    print num1,num2
for i in range(len(ans)):
    ans[i] = str(ans[i])
sys.stdout.write(' '.join(ans))

#360公司##笔试题目#
全部评论

相关推荐

点赞 评论 收藏
转发
1 1 评论
分享
牛客网
牛客企业服务