5

我只是想知道是否有办法检查数组是否在增加?

这是我的解决方案,但我正在寻找更漂亮的方式:

n = - 1

@arr.flatten.each { |e| 
    return false if e < n
    n = e
}
4

2 回答 2

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
于 2013-03-25T12:13:08.873 回答
3

尝试这个,

if @arr.sort.uniq == @arr
  # array is increasing
else 
  # array not increasing
end

这将对数组进行排序并删除重复值,然后将其与原始数组进行比较。

如果您的原始数组总是在增加,它应该匹配已排序、去重的数组。

编辑:

虽然此解决方案提供了所需的结果,但这不是最佳解决方案(请参阅下面的评论)。我建议改用 toch 的解决方案。

于 2013-03-25T12:06:23.337 回答