Python SPOJ 726代码:PRO错误答案?
问题链接: 我所做的 该问题要求您从列表中选择最小和最大元素并将其添加到总数中,它使用python中的heapq模块来解决该问题,尽管它通过了提供的测试用例,但在提交后给出了错误的答案 我的问题 我的代码有什么问题 我的代码Python SPOJ 726代码:PRO错误答案?,python,python-2.7,python-3.x,heap,Python,Python 2.7,Python 3.x,Heap,问题链接: 我所做的 该问题要求您从列表中选择最小和最大元素并将其添加到总数中,它使用python中的heapq模块来解决该问题,尽管它通过了提供的测试用例,但在提交后给出了错误的答案 我的问题 我的代码有什么问题 我的代码 你为什么不使用列表而不是heapq呢?考虑: inp.sort() while len(inp) >= 2: Max = inp.pop(-1) Min = inp.pop(0) total += (Max-Min) 堆条件仅保证堆[0]
你为什么不使用列表而不是heapq呢?考虑:
inp.sort()
while len(inp) >= 2:
Max = inp.pop(-1)
Min = inp.pop(0)
total += (Max-Min)
堆条件仅保证堆[0]是最小值。无法保证最大值为堆[-1]。测试用例通过可能是一个意外。我怀疑如果你以正确的方式随机分配4 10 5 1,最后可能会有10个。问题比这更复杂——在多达5000天的时间里,每一天都会增加更多的数字。我要指出的是,Python的排序利用了现有的顺序,因此通过每天的排序列表来扩展现有的排序列表并重新排序几乎是开的。还值得注意的是,每天之后,只需要保留k个最小值和k个最大值,其中k是促销剩余的天数。介于两者之间的任何东西都不会被使用。
inp.sort()
while len(inp) >= 2:
Max = inp.pop(-1)
Min = inp.pop(0)
total += (Max-Min)