ruby - 计算数组中连续整数元素的数量

标签 ruby arrays performance algorithm

假设我有一个数组,如下所示:

arr = [8, 13, 14, 10, 6, 7, 8, 14, 5, 3, 5, 2, 6, 7, 4]

我想统计连续数列的个数。例如,在上面的数组中,连续的数字序列(或数组切片)是:

[13,14]
[6,7,8]
[6,7]

因此我们有 3 个这样的切片。计算这个的有效算法是什么?我知道我该怎么做 O(N^2) 但我正在寻找比这更好的东西。

最佳答案

arr = [8, 13, 14, 10, 6, 7, 8, 14, 5, 3, 5, 2, 6, 7, 4]
p arr.each_cons(2).chunk{|a,b| a.succ == b || nil}.count #=> 3

nilchunk 方法有特殊意义:它会导致元素被丢弃。

关于ruby - 计算数组中连续整数元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664344/

相关文章:

ruby-on-rails - 检查坐标路径是否交叉

ruby-on-rails - Rails Controller /模型方法

mysql - 使用 ruby​​ 2.0.0 在 Windows 中安装 mysql ruby​​ gem 失败

ruby-on-rails - Rails 如何按嵌套哈希进行分组

python - 使用 numpy 将矩阵元素替换为其他矩阵元素

python - 2D 到 3D numpy 数组的高效转换

c - 如何定义 &array 的算术

php - CSV 与 MySQL 性能对比

php - 使用 PHP 从文件中读取最后几行(即 "tail")的最佳方法是什么?

c# - 游戏逻辑的最快迭代方法 : thread, 空闲处理程序、winproc 或其他我不知道的东西?