假设我有一个数组,如下所示:
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
nil
对 chunk
方法有特殊意义:它会导致元素被丢弃。
关于ruby - 计算数组中连续整数元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664344/