我只是想知道是否有办法检查数组是否在增加?
这是我的解决方案,但我正在寻找更漂亮的方式:
n = - 1
@arr.flatten.each { |e|
return false if e < n
n = e
}
我只是想知道是否有办法检查数组是否在增加?
这是我的解决方案,但我正在寻找更漂亮的方式:
n = - 1
@arr.flatten.each { |e|
return false if e < n
n = e
}
您可以执行以下操作:
> arr = [1, 4, 5, 6]
> arr.each_cons(2).all? { |a, b| (a <=> b) <= 0 }
=> true
您可以将其添加到 Array 类
class Array
def is_sorted?
each_cons(2).all? { |a, b| (a <=> b) <= 0 }
end
end
尝试这个,
if @arr.sort.uniq == @arr
# array is increasing
else
# array not increasing
end
这将对数组进行排序并删除重复值,然后将其与原始数组进行比较。
如果您的原始数组总是在增加,它应该匹配已排序、去重的数组。
编辑:
虽然此解决方案提供了所需的结果,但这不是最佳解决方案(请参阅下面的评论)。我建议改用 toch 的解决方案。