我正在使用Ruby 2.4。如果我有一个有序的数字数组,请说
[1, 2, 4, 7, 8, 9]
如何找到数组中不存在的数值元素,数组中最小值和最大值之间的数值?例如,在上面,缺失值是
[3, 5, 6]
如果我的阵列是
[2, 7]
我要找的缺失值是
[3, 4, 5, 6]
答案 0 :(得分:6)
从预期的数字范围中删除现有数字:
(numbers.first..numbers.last).to_a - numbers
答案 1 :(得分:2)
如果您更喜欢复杂的解决方案:
[1, 2, 4, 7, 8, 9].chunk_while { |a, b| a + 1 == b }
.each_cons(2)
.flat_map { |x, y| (x.last + 1).upto(y.first - 1).to_a }
#=> [3, 5, 6]