如何根据索引将红宝石数组分为两个数组?

山姆

所以我有一个整数数组。我正在尝试采用该数组并找到一个索引N,其中N左边的整数的总和等于N右边的整数的总和。如果没有索引可以使这种情况发生,请返回-1。

例如:

假设我有一个数组[1,2,3,4,3,2,1]:我希望该方法返回索引3,因为在数组的第3个位置,索引左侧的总和与索引右侧的总和都等于6:

[1,2,3].sum #=> 6
[3,2,1].sum #=> 6

对于数组,[1,100,50,-51,1,1]它应该返回索引1,因为在数组的第1个位置,索引左侧的总和与索引[1].sum右侧的总和[50,-51,1,1].sum都等于1。

最后一个:

[20,10,-80,10,10,15,35]在索引0处有一个数组,左边是[],右边是[10,-80,10,10,15,35]两者相加时等于0。(空数组等于0)。

索引0是左侧和右侧相等的地方。

假设数组都是长度在0到1000之间的整数,并且数字可以是正整数或负整数。

N的左侧等于N的右侧的最​​低索引N。如果它没有适合这些规则的索引,则返回-1。

如果一个数组有多个答案,它将返回最低的正确索引。我是这样开始的,但是我没有尝试给我想要的结果。

def find_even_index(arr)
  if arr.size > 1
    left_side = #some code to get left side #reduce(:+)
    right_side = #some code to get right side #reduce(:+)
    # something that gives index at which sum of left side is the same as right
  elsif
    # more than one result give lowest index
  else
    return -1 
  end
end

谢谢!

帕维尔·米哈伊柳克
def eq_sum_index(arr)
  right_sum = arr.sum
  left_sum = 0
  arr.each_with_index do |e, index|
    right_sum -= e
    return index if left_sum == right_sum
    left_sum += e
  end
  -1
end

eq_sum_index([1, 2, 3, 4, 3, 2, 1])
# => 3
eq_sum_index([1, 100, 50, -51, 1, 1])
# => 1
eq_sum_index([20, 10, -80, 10, 10, 15, 35])
# => 0

解释:

  1. 预先计算右部分总和作为数组的总和。
  2. 迭代数组,每转一圈将元素从右侧部分转移到左侧部分(从右侧减去后再添加到左侧)
  3. 每回合,如果两个和相等,则返回索引。
  4. 如果找不到相等的总和,则返回-1。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP根据值将数组分为两个数组

来自分类Dev

PHP根据值将数组分为两个数组

来自分类Dev

如何通过数组键值将数组分为两个数组

来自分类Dev

如何匹配两个数组的内容并获得相应的索引红宝石

来自分类Dev

我如何在php中将数组分为两个数组

来自分类Dev

根据复杂的标准将数组分为两个。

来自分类Dev

红宝石/将数组拆分为列

来自分类Dev

如何根据索引php合并两个数组?

来自分类Dev

Ruby:将数组分为两个数组,并尽可能取平均值

来自分类Dev

如何将一个数组分成两个不同的数组?

来自分类Dev

根据关联键将PHP数组拆分为两个数组

来自分类Dev

Objective-C根据偶数/奇数索引将数组拆分为两个单独的数组

来自分类Dev

Objective-C根据偶数/奇数索引将数组拆分为两个单独的数组

来自分类Dev

将大数组拆分为两个数组

来自分类Dev

将大数组拆分为两个数组

来自分类Dev

如何使用两个数组分配PHP变量

来自分类Dev

如何对齐两个数组索引?

来自分类Dev

将数组分为两个子数组,以使数组总和之间的差最小?

来自分类Dev

将数组分为两个子数组,以使数组总和之间的差最小?

来自分类Dev

根据列名称将矩阵拆分为两个数组

来自分类Dev

如何将一个数组拆分为两个不同的数组?

来自分类Dev

将一个数组分成两个数组

来自分类Dev

使用功能性JavaScript将数组分为两个不同的数组

来自分类Dev

红宝石将初始文件内容拆分为数组

来自分类Dev

如何将文本文件拆分为两个数组?

来自分类Dev

以最小的总和将一个数组分成两个子数组

来自分类Dev

将一个数组分成两个相等大小的数组

来自分类Dev

perl 将一个数组拆分为两个数组

来自分类Dev

根据阈值将数组分成多个数组

Related 相关文章

  1. 1

    PHP根据值将数组分为两个数组

  2. 2

    PHP根据值将数组分为两个数组

  3. 3

    如何通过数组键值将数组分为两个数组

  4. 4

    如何匹配两个数组的内容并获得相应的索引红宝石

  5. 5

    我如何在php中将数组分为两个数组

  6. 6

    根据复杂的标准将数组分为两个。

  7. 7

    红宝石/将数组拆分为列

  8. 8

    如何根据索引php合并两个数组?

  9. 9

    Ruby:将数组分为两个数组,并尽可能取平均值

  10. 10

    如何将一个数组分成两个不同的数组?

  11. 11

    根据关联键将PHP数组拆分为两个数组

  12. 12

    Objective-C根据偶数/奇数索引将数组拆分为两个单独的数组

  13. 13

    Objective-C根据偶数/奇数索引将数组拆分为两个单独的数组

  14. 14

    将大数组拆分为两个数组

  15. 15

    将大数组拆分为两个数组

  16. 16

    如何使用两个数组分配PHP变量

  17. 17

    如何对齐两个数组索引?

  18. 18

    将数组分为两个子数组,以使数组总和之间的差最小?

  19. 19

    将数组分为两个子数组,以使数组总和之间的差最小?

  20. 20

    根据列名称将矩阵拆分为两个数组

  21. 21

    如何将一个数组拆分为两个不同的数组?

  22. 22

    将一个数组分成两个数组

  23. 23

    使用功能性JavaScript将数组分为两个不同的数组

  24. 24

    红宝石将初始文件内容拆分为数组

  25. 25

    如何将文本文件拆分为两个数组?

  26. 26

    以最小的总和将一个数组分成两个子数组

  27. 27

    将一个数组分成两个相等大小的数组

  28. 28

    perl 将一个数组拆分为两个数组

  29. 29

    根据阈值将数组分成多个数组

热门标签

归档