我对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
有人能指导我在这里做错了吗?
答案 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中的项目。订单保留在 原始阵列。
它使用
hash
和eql?
方法比较元素效率
答案 1 :(得分:2)
您正在传递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]
从您的方法开始。