CS_ruler
CS_ruler
采纳率0%
2021-03-05 13:43

华为机试,一星题,python, 运行代码只通过23%的测试用例,何解?

编程题:输入两对数组array1、array2,输入整数k,在两组数组中取k对元素,将k对元素相加,求k对元素相加的最小和,每组数组的第一个元素也是数组size(大小),0<k<arary1.size*array2.size,若两对元素在array1和array2中的元素下标相同,则视为一对元素。

例子:输入:3 1 1 2

                     3 1 2 5

                     2

          输出:4

我的没有通过的编程代码

array1 = sorted(list(map(int, input().split())))
array2 = sorted(list(map(int, input().split())))
k = int(input())
res = []
s_sum = 0
for i in array1:
    for j in array2:
        res.append(int(i)+int(j))
res = sorted(res)
for b in range(k):
    s_sum += res[b]
print(s_sum)
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • qq_34124780 qq_34124780 1月前

    你上来就给人家排序,下标早就乱了,但是要求判断两对元素在array1和array2中的元素下标是否相同相同,相同则视为一对元素,结果怎么可能会全对呢

    点赞 1 评论 复制链接分享
  • qq_34124780 qq_34124780 1月前

    假设现在有两组输入

    A=[3, 1, 2, 2]
    B=[3, 4, 2, 5]
    K=1              

    令K=1,那么应该取的是[A[2],B[2]]=[2,2]得到最小结果4

    按照你的方法,上来先排序后:

    A=[1,2,2,3]
    B=[2,3,4,5]
    k=1

    那么你自己看看选一对最小的值是多少?还是不是跟题目一样了?

    点赞 评论 复制链接分享
  • qqzhuimengren PythonJavaC++go 1月前

    请问是原题吗,我居然没看懂【doge】

    点赞 评论 复制链接分享

为你推荐