前几天我在HackerRank解决了10天的统计问题。我的解决方案非常简单,几乎适用于所有的测试用例。我的代码失败的那个有2500个数字作为输入。我放了一些指纹来看看这是怎么发生的,发现我的数字列表中只有693个值。你知道吗
下面是查找中间值的部分:
number_of_items = int(input().strip())
inputs = list(map(int, input().split(' ')))
inputs.sort()
if (number_of_items % 2) == 0:
n = number_of_items // 2 - 1
median = (inputs[n] + inputs[n+1])/2
else:
n = number_of_items // 2
median = inputs[n-1]
print(median)
下面是完整的代码:https://gist.github.com/mnzr/5a6f6c1c49d4dc0dbb940ed3ecba79ff
我曾在一个在线编辑器上尝试过这段代码,但效果不错,只有一个例外:模式与实际数字相差甚远。你知道吗
我以为Python列表可以容纳大量的数字!为什么它在我的电脑上不工作?你知道吗
编辑:我有一个朋友自己解决了这个问题,并把结果传给我。然后告诉他运行我的代码,告诉我他看到了什么。这是他的代码:https://gist.github.com/sz-ashik440/192bc22b18da0292832e65997a6787a7 事情是这样的: 他说:他的密码起作用了。我运行它,它在我的电脑上也工作!这是第一次。 他说:我把代码给了他,然后自己再运行一遍。我看到只有693个元素,他也报告了同样的情况。 3:也许最令人惊讶的是,他自己的版本给出了同样的索引外错误和一个大小为693的数组!我朋友自己电脑上的代码现在给出了错误的答案。你知道吗
这是我的系统配置:
我的朋友正在ubuntu14.04上使用python3.4.3。你知道吗
我不知道为什么在本地机器上运行代码时会遇到这种限制,但是,我强烈怀疑这是由于输入数据造成的—可能是Martijn Pieters建议的一个不规则的新行字符。你知道吗
HackerRank的问题是由于模式计算造成的:
这总是从输入中选择最低的值,而不是最常出现的值中的最低值。有一种方法:
请注意,还有另一个问题,您需要将平均值和中值四舍五入到1位小数,但是HackerRank的测试数据不会暴露此错误。你知道吗
相关问题 更多 >
编程相关推荐