查找从数组中删除的号码

时间:2017-07-17 10:28:39

标签: arrays ruby

我对ruby很新,所以忍受我,我有两个数组,我们打算找到丢失的数字。

起始数组序列为[1,2,3,4,5,6,7,8,9] 具有一个删除数字的混合数组是5 [3,2,4,6,7,8,1,9]

我的想法是将每个数组加起来,看看哪个数字丢失了 - 我开始制作一个方法(我知道它很破旧,但我正在学习)

def find_deleted_number(arr, mixed)
  arr = [1,2,3,4,5,6,7,8,9]
  mixed = [3,2,4,6,7,8,1,9]
  y = arr.inject(0){|sum,x| sum + x }
  x = mixed_arr.inject(0){|total, y| total + y}
  return y - x
end

有人能指导我在这里做错了吗?

2 个答案:

答案 0 :(得分:6)

使用阵列差异

[1,2,3,4,5,6,7,8,9] - [3,2,4,6,7,8,1,9]
 #=> [5] 

来自docs

  

ary - other_ary→new_ary

     

返回一个新数组,它是原始数组的副本,删除任何数组   也出现在other_ary中的项目。订单保留在   原始阵列。

     

它使用hasheql?方法比较元素效率

答案 1 :(得分:2)

您正在传递mixed作为参数,然后将其用作mixed_arr.inject...,似乎可以正常工作,使其保持一致。

此外,由于您传递的是arrmixed,因此您无需在方法中设置它们,您可以将其称为

find_deleted_number([1,2,3,4,5,6,7,8,9], [3,2,4,6,7,8,1,9])

然后删除

arr = [1,2,3,4,5,6,7,8,9]
mixed = [3,2,4,6,7,8,1,9]

从您的方法开始。