Функциональный код ниже обязательного в Scala

Я хочу написать функциональную версию для поиска пары элементов с заданной суммой. Ниже приведен императивный код:

object ArrayUtil{

  def findPairs(arr:Array[Int],sum:Int) ={
    val MAX = 50
    val binmap:Array[Boolean] = new Array[Boolean](MAX)

    for(i <- 0 until arr.length){

      val temp:Int = sum-arr(i);
         if (temp>=0 && binmap(temp))
           {
            println("Pair with given sum " + sum + " is (" + arr(i) +", "+temp+")");
           }
      binmap(arr(i)) = true;
       }
    }
}

1 ответ

Решение

Изучите стандартную библиотеку.

def findPairs(arr:Array[Int],sum:Int): List[Array[Int]] =
  arr.combinations(2).filter(_.sum == sum).toList
Другие вопросы по тегам