所以,当我使用print()
/sys.stdout.write()
打印我的结果时(我已经检查了所有结果是否正确),当我不使用打印时,程序执行时间增加到最小 100 倍。
N = 列表中的元素数(numpy
数组)
C = C 是数组
T = 数组数
1≤N≤1000
1≤Ci≤10^5
1≤T≤100
我认为这是由于打印功能而发生的。如果是,我将如何解决此问题
没有打印执行时间 = 0.012797699999999967
打印执行时间 = 1.1667817
这是一个来自谷歌启动的问题
def sub_one(inputlist, inputlength):
smalllist = np.array([], dtype='int32')
outputlist = np.array([], dtype='int32')
h_score = 1
for mainnum in inputlist:
if mainnum > h_score:
smalllist = np.append(smalllist, mainnum)
else:
outputlist = np.append(outputlist, mainnum)
continue
eachlist = np.array([], dtype='int32')
for num in smalllist:
if num >= h_score:
eachlist = np.append(eachlist, h_score)
if np.count_nonzero(eachlist) == h_score:
outputlist = np.append(outputlist, h_score)
smalllist = smalllist[smalllist > h_score]
h_score += 1
return outputlist
def caseprinter(thelist):
returnstring = ""
for i in thelist:
returnstring += (str(i) + " ")
return returnstring
if __name__ == "__main__":
cases = int(input())
for i in range(cases):
inputlength = int(input())
inputlist = input().split(" ")
inputlist = np.array(inputlist, dtype='int32')
outputlist = sub_one(inputlist, inputlength)
print(f'Case #{i+1}: {caseprinter(outputlist)}')```
您的
def caseprinter(thelist):
returnstring = ""
for i in thelist:
returnstring += (str(i) + " ")
return returnstring
可能需要二次时间。尝试线性时间:
def caseprinter(thelist):
return " ".join(map(str, thelist))