如何确定数组是否有连续的整数,如果有,有多少?

wat*_*zon 2 arrays scala

我仍然是Scala的新手,但我试图确定一个数组是否有任何连续的整数,如果它有,那么它有多少.这是我到目前为止所做的,但我还没有完成它.

def isConsecutive(seq: Array[Int]): (Boolean, Int) = {
    var arr: Array[Int] = Array[Int]()
    for((v, i) <- seq.zipWithIndex) {
      if (i < seq.length()) {
        if (v + 1 == seq(i + 1)) {
          arr = arr :+ v
        }
      }
    }
    var res = if (arr.length() < 1) true else false
    return (res, arr.length())
  }
Run Code Online (Sandbox Code Playgroud)

我只想返回一个布尔值,表示数组是否有连续的整数,即1,2,3,以及连续整数的数量或零.

jwv*_*wvh 8

def isConsecutive(seq: Array[Int]): (Boolean, Int) = {
  val count = seq.sliding(2).count(a => a(0)+1 == a(1)) 
  (count > 0, count)
}
Run Code Online (Sandbox Code Playgroud)

并测试它:

scala> isConsecutive(Array(3,5,8,99))
res0: (Boolean, Int) = (false,0)

scala> isConsecutive(Array(3,4,5,8,99))
res1: (Boolean, Int) = (true,2)

scala> isConsecutive(Array(3,4,5,98,99))
res2: (Boolean, Int) = (true,3)
Run Code Online (Sandbox Code Playgroud)