Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,844 questions

51,765 answers

573 users

How to find the two elements in an array whose sum is closest to zero in Scala

1 Answer

0 votes
object ClosestToZero {

  // Function to find the two elements whose sum is closest to zero
  def findClosestToZero(arr: Array[Int]): Unit = {
    if (arr.length < 2) {
      println("arr must have at least two elements.")
      return
    }

    // Step 1: Sort the arr
    val sortedArr = arr.sorted

    var left = 0
    var right = sortedArr.length - 1
    var closestSum = Int.MaxValue
    var closestPair = (0, 0)

    // Step 2: Use two-indexed technique
    while (left < right) {
      val sum = sortedArr(left) + sortedArr(right)

      // Update closest sum and pair if needed
      if (math.abs(sum) < math.abs(closestSum)) {
        closestSum = sum
        closestPair = (sortedArr(left), sortedArr(right))
      }

      // Move indexeds
      if (sum < 0) {
        left += 1 // Increase sum by moving left indexed
      } else {
        right -= 1 // Decrease sum by moving right indexed
      }
    }

    // Output the result
    println(s"The two elements whose sum is closest to zero are: ${closestPair._1} and ${closestPair._2} with a sum of $closestSum.")
  }

  def main(args: Array[String]): Unit = {
    val arr = Array(23, -26, -88, -42, 55, 99, -11, 90, -13, 17, -31)
    
    findClosestToZero(arr)
  }
}


/*
run:

The two elements whose sum is closest to zero are: -88 and 90 with a sum of 2.

*/

 



answered Sep 13, 2025 by avibootz
...