716016. Fraction pairs with sum 1

Medium

Fraction Pairs with Sum 1

Slug: fraction-pairs-with-sum-1

Difficulty: Medium

Id: 716016

Topic Tags: Mathematical, Map

Company Tags: Microsoft

Summary

Given a list of fractions in the form [numerator/denominator], find all unique pairs of fractions that add up to 1. The problem is about finding fraction pairs with sum 1 and involves mathematical concepts like fractions and mapping.

Detailed Explanation

To solve this problem, we can iterate through the list of fractions, considering each pair as a potential solution. We'll keep track of the fractions we've seen so far using a HashMap to store the denominators as keys and their corresponding numerators as values.

Here's the step-by-step breakdown:

  1. Initialize an empty HashMap fractionMap to store the fractions.
  2. Iterate through the list of fractions:
    • For each fraction, extract the numerator and denominator.
    • Calculate the reciprocal of the current fraction (i.e., swap the numerator and denominator).
    • Check if the reciprocal is already in the fractionMap. If it is, that means we've found a pair of fractions that add up to 1. Add this pair to our result set.
  3. After iterating through all the fractions, return the result set containing all unique pairs of fractions with sum 1.

Time complexity: O(n), where n is the number of fractions in the list. Space complexity: O(n), as we need to store the fractions and their denominators in the HashMap.

Optimized Solutions

Java

View on GeeksforGeeks
import java.util.*;

public class FractionPairs {
    public static List<List<Integer>> fractionPairs(int[][] fractions) {
        Map<Integer, Integer> fractionMap = new HashMap<>();
        Set<List<Integer>> result = new HashSet<>();

        for (int[] fraction : fractions) {
            int numerator = fraction[0];
            int denominator = fraction[1];

            int reciprocalNumerator = denominator;
            int reciprocalDenominator = numerator;

            if (!fractionMap.containsKey(reciprocalDenominator)) {
                fractionMap.put(reciprocalDenominator, reciprocalNumerator);
            } else {
                result.add(Arrays.asList(fraction[0], fraction[1], fractionMap.get(reciprocalDenominator), reciprocalDenominator));
            }
        }

        return new ArrayList<>(result);
    }
}

DevExCode

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

© 2026 DevExCode. All rights reserved.