702733. Finding-Pairs

Easy

Finding-Pairs

Summary

This problem involves finding all pairs in an array that sum up to a given target value. The algorithm should efficiently identify these pairs, taking into account the frequency of each element in the array.

Detailed Explanation

To solve this problem, we can utilize a hash map (unordered_map in C++ or dictionary in Python) to store the frequency of each element in the array. Then, for each pair in the array, calculate its sum and check if it exists in the hash map. If it does, increment the count of that sum.

Here's a step-by-step breakdown:

  1. Initialize an empty hash map (unordered_map or dictionary) to store the frequency of elements.
  2. Traverse the given array and for each element, update its frequency in the hash map.
  3. Iterate over the array again and for each pair, calculate its sum.
  4. Check if this sum exists in the hash map. If it does, increment the count of that sum.

Time Complexity: O(n) Space Complexity: O(n)

Here's a diagram illustrating the process:

     +---------------+
     |  Initialize  |
     +---------------+
                  |
                  v
     +---------------+
     |  Traverse Array  |
     +---------------+
                  |
                  v
     +---------------+
     |  Update Hash Map  |
     +---------------+
                  |
                  v
     +---------------+
     |  Iterate over Array  |
     +---------------+
                  |
                  v
     +---------------+
     |  Check Sum in Hash Map  |
     +---------------+

Optimized Solutions

Java

View on GeeksforGeeks
import java.util.HashMap;
import java.util.Map;

public class FindingPairs {
    public static void findPairs(int[] array, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        
        for (int num : array) {
            if (!map.containsKey(num)) {
                map.put(num, 1);
            } else {
                map.put(num, map.get(num) + 1);
            }
        }
        
        for (int i = 0; i < array.length; i++) {
            for (int j = i + 1; j < array.length; j++) {
                int sum = array[i] + array[j];
                
                if (sum == target) {
                    System.out.println("Pair found: (" + array[i] + ", " + array[j] + ")");
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {1, 2, 3, 4, 5};
        int target = 7;
        
        findPairs(array, target);
    }
}

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.