Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python HackerRank Bonetrousle代码超时_Python_Algorithm - Fatal编程技术网

Python HackerRank Bonetrousle代码超时

Python HackerRank Bonetrousle代码超时,python,algorithm,Python,Algorithm,我一直在使用python解决黑客等级中的Bonetrousle问题。几个小时后,下面的代码通过了所有测试用例,只有一个测试用例超时。任何关于如何使代码更快的建议都将不胜感激。我相信问题在于处理剩余部分的代码,我在下面和上面都加了注释,所以很容易找到。不幸的是,我不知道如何重构它,使它工作得更快 我编写的代码对于所有测试用例都得到了正确的答案,我已经在pycharm中验证了这一点。唯一的问题是,它是缓慢的黑客等级测试案例之一 这里是问题的链接 这里有一个链接,指向失败的测试用例 firstLin

我一直在使用python解决黑客等级中的Bonetrousle问题。几个小时后,下面的代码通过了所有测试用例,只有一个测试用例超时。任何关于如何使代码更快的建议都将不胜感激。我相信问题在于处理剩余部分的代码,我在下面和上面都加了注释,所以很容易找到。不幸的是,我不知道如何重构它,使它工作得更快

我编写的代码对于所有测试用例都得到了正确的答案,我已经在pycharm中验证了这一点。唯一的问题是,它是缓慢的黑客等级测试案例之一

这里是问题的链接

这里有一个链接,指向失败的测试用例

firstLine=int(输入())
对于范围内的(0,第一行):
nums=input()
numsArr=list(映射(int,nums.split(“”))
n=numsArr[0]
k=numsArr[1]
b=numsArr[2]
num1=0
雷姆=0
答案=正确
重新添加=错误
计数=0
boxArr=[]
对于范围(1,b+1)内的i:
计数+=i
附件(一)
num1=(n-计数)//b
rem=(n-计数)%b
对于范围(0,len(boxArr))内的j:
boxArr[j]=boxArr[j]+num1
如果boxArr[j]>k:
答案=错误
#在下面的代码->中,如果有余数,我将其添加到数组中具有箱号的元素中
#我检查是否可以将余数添加到数组中的元素
#如果该元素不超过k,则为棒数。如果我做不到,那么重拍的bool就不会被设置为True
#下面的代码可以工作,但它似乎效率低下,看起来像是问题所在
如果rem==0:
重新添加=真
以利夫回答!=错误:
对于范围内的r(len(boxArr)-1,0,-1):

如果boxArr[r]+rem将注释之间的代码替换为:

if rem == 0:
    remAdded = True
elif boxArr[-1] + 1 > k:
    remAdded = False
elif answer != False:
    l = len(boxArr)-1
    for r in range(l, l-rem, -1):
        boxArr[r] += 1
    remAdded = True
这基本上消除了boxArr中不存在的昂贵的
(boxArr[r]+rem)。它通过了我所有的测试用例

if rem == 0:
    remAdded = True
elif boxArr[-1] + 1 > k:
    remAdded = False
elif answer != False:
    l = len(boxArr)-1
    for r in range(l, l-rem, -1):
        boxArr[r] += 1
    remAdded = True