我只是想知道是否有办法检查阵列是否在增加?
这是我的解决方案,但我正在寻找更美丽的方式:
n = - 1
@arr.flatten.each { |e|
return false if e < n
n = e
}
答案 0 :(得分:5)
您可以执行以下操作:
> 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
答案 1 :(得分:3)
试试这个,
if @arr.sort.uniq == @arr
# array is increasing
else
# array not increasing
end
这将对数组进行排序并删除重复值,然后将其与原始数组进行比较。
如果原始数组总是在增加,它应该与已排序的重复数据删除数组匹配。
修改强>
虽然此解决方案提供了所需的结果,但这不是最佳解决方案(请参阅下面的评论)。我建议改用toch的解决方案。