How to check if an array is all increasing or decreasing and the gap between numbers is 1, 2 or 3 in Scala

1 Answer

0 votes
object Main {
  def isArraySortedAndValidGap(arr: Array[Int]): Boolean = {
    if (arr.length < 2) return true

    var result = true

    val increasing = arr(1) > arr(0)
    for (i <- 1 until arr.length) {
      val diff = (arr(i) - arr(i - 1)).abs
      if (diff < 1 || diff > 3) {
        result = false
      } else {
          if ((increasing && arr(i) <= arr(i - 1)) || (!increasing && arr(i) >= arr(i - 1))) {
            result = false
          }  
        }
    }
    
    result
  }

  def main(args: Array[String]): Unit = {
    val arr1 = Array(1, 2, 3, 5, 8, 11, 14, 15)
    println(isArraySortedAndValidGap(arr1)) 

    val arr2 = Array(15, 14, 11, 8, 5, 3, 2, 1)
    println(isArraySortedAndValidGap(arr2)) 

    val arr3 = Array(1, 2, 300, 5, 8, 11, 14, 15)
    println(isArraySortedAndValidGap(arr3)) 
  }
}

  
  
/*
run:
    
true
true
false
  
*/

 



answered Jan 13, 2025 by avibootz
...