【发布时间】:2015-02-18 23:02:11
【问题描述】:
学习 Ruby 并尝试在 Coderbyte 上解决问题。此代码应该查找数组中数字之间的数字数量。所以[4,8,6] 应该返回 2(它需要 5 和 7 是连续的)。 [5,10,15] 应该返回 8,[-2,10,4] 应该返回 10。
我的解决方案是获取一个数字与其下一个最大数字之间的差,减一,即它们之间有多少个数字。
当我在每个循环中p new_arr 时,它具有正确的数组:[1,1] 在第一种情况下,[4,4] 在下一种情况下,[5,5] 在最后一种情况下。但是当我退出每个循环时,数组又是空的,new_arr.reduce(:+) 返回 nil。
我不明白为什么,因为我在each 循环之外定义了new_arr。我在这里遗漏了一些范围问题吗?
def Consecutive(arr)
arr.sort!
num_of_nums = 0
new_arr = []
i = 0
arr.each do
return if i == arr.length - 1
num_of_nums = (arr[i+1] - arr[i]) - 1
new_arr << num_of_nums
i+=1
p new_arr
end
new_arr.reduce(:+)
end
【问题讨论】:
标签: ruby