【leetcode】1447. Simplified Fractions

题目如下:

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. The fractions can be 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".

Example 4:

Input: n = 1
Output: []

Constraints:

  • 1 <= n <= 100

解题思路:关键在于计算分子和分母的最大公约数是否是1。

代码如下:

class Solution(object):
    def simplifiedFractions(self, n):
        """
        :type n: int
        :rtype: List[str]
        """
        def gcd(m, n):
            if not n:
                return m
            else:
                return gcd(n, m % n)


        res = []

        for i in range(1,n+1):
            for j in range(1,i):
                if gcd(i,j) == 1:
                    res.append(str(j) + '/' + str(i))

        return res
原文地址:https://www.cnblogs.com/seyjs/p/13041687.html