学习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。
我不明白为什么,因为我new_arr
在each
循环之外定义。我在这里缺少一些示波器问题吗?
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
如果您不返回任何东西i == arr.length - 1
。
您可能要返回此值:
return new_arr.reduce(:+) if i == arr.length - 1
或使用break
而不是return
,因此您可以跳出最内层的循环。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句