具有以下数组和值:
v = 50
a = [10, 20, 25, 10, 15]
我想遍历数组,将值相加,直到这些值的总和超过变量 v。然后我希望能够返回数组中发生这种情况的索引。所以...
10 + 20 + 25 = 55(这是总和大于“v”的第一个点) 所以指数 = 2
谢谢你的帮助
最佳答案
总和:
a.inject do |sum,n|
break sum if sum > v
sum + n
end
对于索引,思路是一样的——将备忘录用作数组,并将总和保存在第一个元素中:
a.inject([0,-1]) do |memo,n|
break [memo[0], memo[1]] if memo[0] > v
[memo[0]+n, memo[1]+1]
end
之后你需要查看数组
关于arrays - Ruby 注入(inject)直到总和超过设定值并返回发生这种情况的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30903949/