查找从数组中删除的号码

我对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 

任何人都可以指导我在这里做错了吗?

你作为一个参数传递mixed ,然后使用它作为mixed_arr.inject... ,似乎工作正常,使这些一致。

此外,由于您传入arr并且mixed您不需要在方法中设置它们,您可以将其称为

 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] 

从你的方法开始。

使用数组差异

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

来自文档 :

ary – other_ary→new_ary

返回一个新数组,该数组是原始数组的副本,删除也出现在other_ary中的所有项。 订单从原始数组中保留。

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