【问题标题】:How to check if the sum of all the previous elements in the array are greater than the next element in the array?如何检查数组中所有先前元素的总和是否大于数组中的下一个元素?
【发布时间】:2020-10-13 07:13:16
【问题描述】:

例如,给了我一个数组,我必须检查数组中所有先前元素的总和是否大于下一个元素。

例如,我已经给出 (1,2,3) 现在 1+2 不大于 3 所以在这种情况下是错误的。再次给出(1,1,1)。现在 1+1 严格大于 1。

for x in range(1,len(i)):
           if(sum(i[0:x])>sum(i[x:])):
            #   print(str(i[:x])+str(i[x:]))
               Ways+=1

【问题讨论】:

  • 请考虑分享您的代码段、错误消息或您尝试过的解决方案。
  • @ChintanRajvir 我已经添加了我正在尝试的内容
  • 考虑到您的问题部分,IF 语句应该类似于:if(sum(i[:x])>i[x]:。您的方法是使用蛮力技术。您可以通过计算前缀和数组来优化它。

标签: python arrays algorithm


【解决方案1】:

如果通过“下一个元素”,我假设您的意思是 last 元素,这意味着您必须找到直到最后一个元素的所有值的总和是否大于最后一个元素。如果我错了,请纠正我。

如果是这种情况,则简单地遍历数组直到最后一个元素,并将当前循环的值添加到另一个变量,然后如果该变量大于最后一个元素,则返回。

例如:

n.onkeyup = n.onkeypress = n.onkeydown = n.onfocus = n.onchange = n.onblur = () => {
  var allOtherElementsSum = 0,
      myArray = n.value.split(" ").map(x => x.trim()).filter(x=>x)
  myArray.forEach((x, i, a) => (i < a.length - 1) && (allOtherElementsSum += parseInt(x)))
  var isGreater = myArray[myArray.length-1] <= allOtherElementsSum
  out.innerHTML = "array: " + myArray + ", sum: " + allOtherElementsSum + ", and last element: "+ myArray[myArray.length-1] + ", is sum greater or not than last element: " + isGreater
}
&lt;input placeholder="type a bunch of numbers separated by spaces" id=n&gt;&lt;div id=out&gt;&lt;/div&gt;

【讨论】:

  • 现在是最后一个元素。我说的是每次你遇到一个元素 n 然后考虑所有之前的 n-1 个元素。
  • @classydraught 考虑所有前面的 n-1 个元素是什么意思?你的返回值是多少?一个号码?数组?可以举个例子吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2017-05-29
  • 2014-12-19
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多