在hackerrank中,这个问题在15个测试用例中有8个失败,请有人纠正这个问题,并告诉我出了什么问题
另外,我想在这个问题上使用random,而不是其他方法
import random
在列表中输入值
arr=[int(x) for x in input().split()]
为最小值(最小值)分配随机选择的大数值
mini=1000000000000
maxi=0
for x in range(len(arr)-1):
randomsum=sum(random.sample(arr,4))
if randomsum<mini:
mini=randomsum
if randomsum >maxi:
maxi=randomsum
print(mini,maxi)
问题清楚地表明,打印的值应该是列表中最小的4个整数和最大的4个整数。对于较大的数组大小,random.sample仍然无法覆盖数组的所有部分。这个问题需要一个具体的解决方案,而不是随机化样本列表。2线解决方案:
随机获取大小为4的样本的原因是,问题要求您明确获取4个最小值和4个最大值,并在屏幕上打印它们的总和,因此,如果随机获取样本,则不太可能获得4个最小值和4个最大值,即使您没有随机化,而是遍历列表,并将每4个长度子列表与最简单和最大的整数进行比较,您也不会成功,因为列表仍然不太可能已经排序,并且您将按顺序获得4个最小和4个最大的数。这就是为什么这样的事情会失败:
你的算法有问题。给定5个整数的隐含测试,您将随机抽取5个样本。无法保证您会为其中两个样本选择要排除的最小和最大元素
您的代码可以找到所选样本的最小值和最大值,但这不是问题规范。您尚未解释您认为这将如何为您提供可靠的答案,因此我们无法“修复”您的代码
这是一个具有直接、确定性解决方案的问题。你的个人要求涉及一个随机组件似乎不符合解决给定问题的目标。我建议您停止使用
random
,只需按照给定的方法解决问题相关问题 更多 >
编程相关推荐