查找从数组中删除的号码
我对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中的所有项。 订单从原始数组中保留。
它使用
hash
和eql?
来比较元素eql?
效率的方法