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,939 questions

51,876 answers

573 users

How to find the two elements in a list whose sum is closest to zero in Java

1 Answer

0 votes
import java.util.Arrays;  // for sorting
import java.util.List;    // for input list
import java.util.ArrayList;
 
public class ClosestToZero {
 
    // Function to find the two elements whose sum is closest to zero
    public static void findClosestToZero(List<Integer> lst) {
        if (lst.size() < 2) {
            System.out.println("list must have at least two elements.");
            return;
        }
 
        // Step 1: Sort the list
        List<Integer> sortedlst = new ArrayList<>(lst);
        sortedlst.sort(Integer::compareTo);
 
        int left = 0;
        int right = sortedlst.size() - 1;
        int closestSum = Integer.MAX_VALUE;
        int[] closestPair = new int[2];
 
        // Step 2: Use two-indexed technique
        while (left < right) {
            int sum = sortedlst.get(left) + sortedlst.get(right);
 
            // Update closest sum and pair if needed
            if (Math.abs(sum) < Math.abs(closestSum)) {
                closestSum = sum;
                closestPair[0] = sortedlst.get(left);
                closestPair[1] = sortedlst.get(right);
            }
 
            // Move indexeds
            if (sum < 0) {
                left++; // Increase sum by moving left indexed
            } else {
                right--; // Decrease sum by moving right indexed
            }
        }
 
        // Output the result
        System.out.println("The two elements whose sum is closest to zero are: "
                + closestPair[0] + " and " + closestPair[1]
                + " with a sum of " + closestSum + ".");
    }
 
    public static void main(String[] args) {
        List<Integer> lst = Arrays.asList(23, -26, -88, -42, 55, 99, -11, 90, -13, 17, -31);
 
        findClosestToZero(lst);
    }
}
 
 
/*
run:
 
The two elements whose sum is closest to zero are: -88 and 90 with a sum of 2.
 
*/

 



answered Sep 12, 2025 by avibootz
edited Sep 13, 2025 by avibootz
...