Find a pair of elements from an array whose sum equals a given number

后端 未结 30 1393
暗喜
暗喜 2020-11-22 10:14

Given array of n integers and given a number X, find all the unique pairs of elements (a,b), whose summation is equal to X.

The following is my solution, it is O(nLo

30条回答
  •  深忆病人
    2020-11-22 10:42

    Here is Java code for three approaches:
    1. Using Map O(n), HashSet can also be used here.
    2. Sort array and then use BinarySearch to look for complement O(nLog(n))
    3. Traditional BruteForce two loops O(n^2)

    public class PairsEqualToSum {
    
    public static void main(String[] args) {
        int a[] = {1,10,5,8,2,12,6,4};
        findPairs1(a,10);
        findPairs2(a,10);
        findPairs3(a,10);
    
    }
    
    
    //Method1 - O(N) use a Map to insert values as keys & check for number's complement in map
        static void findPairs1(int[]a, int sum){
            Map pairs = new HashMap();
            for(int i=0; i0 && foundAtIndex != i) //to avoid situation where binarySearch would find the original and not the complement like "5"
                    System.out.println("("+a[i]+","+(sum-a[i])+")");
            }
     }
    
    //Method 3 - Brute Force O(n^2)
    static void findPairs3(int[]a, int sum){
    
        for(int i=0; i

提交回复
热议问题