All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g1401_1500.s1447_simplified_fractions.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g1401_1500.s1447_simplified_fractions;

// #Medium #String #Math #Number_Theory #2022_03_28_Time_33_ms_(69.60%)_Space_67.7_MB_(81.94%)

import java.util.ArrayList;
import java.util.List;

/**
 * 1447 - Simplified Fractions\.
 *
 * Medium
 *
 * Given an integer `n`, return _a list of all **simplified** fractions between_ `0` _and_ `1` _(exclusive) such that the denominator is less-than-or-equal-to_ `n`. You can return the answer in **any order**.
 *
 * **Example 1:**
 *
 * **Input:** n = 2
 *
 * **Output:** ["1/2"]
 *
 * **Explanation:** "1/2" is the only unique fraction with a denominator less-than-or-equal-to 2.
 *
 * **Example 2:**
 *
 * **Input:** n = 3
 *
 * **Output:** ["1/2","1/3","2/3"]
 *
 * **Example 3:**
 *
 * **Input:** n = 4
 *
 * **Output:** ["1/2","1/3","1/4","2/3","3/4"]
 *
 * **Explanation:** "2/4" is not a simplified fraction because it can be simplified to "1/2".
 *
 * **Constraints:**
 *
 * *   `1 <= n <= 100`
**/
@SuppressWarnings("java:S2234")
public class Solution {
    public List simplifiedFractions(int n) {
        List result = new ArrayList<>();
        if (n == 1) {
            return result;
        }
        StringBuilder str = new StringBuilder();
        for (int denom = 2; denom <= n; denom++) {
            for (int num = 1; num < denom; num++) {
                if (checkGCD(num, denom) == 1) {
                    result.add(str.append(num).append("/").append(denom).toString());
                }
                str.setLength(0);
            }
        }
        return result;
    }

    private int checkGCD(int a, int b) {
        if (a < b) {
            return checkGCD(b, a);
        }
        if (a == b || a % b == 0 || b == 1) {
            return b;
        }
        return checkGCD(a % b, b);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy