swift 解决leetcode 1447题最简分数问题

     题目:给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于  n的 最简 分数 。分数可以以 任意 顺序返回。1447题

      示例 输入:n = 4输出:["1/2","1/3","1/4","2/3","3/4"]解释:"2/4" 不是最简分数,因为它可以化简为 "1/2" 。

    leetcode标注为中等难度题,但是并没有那么难

    分析一下题目之后发现,这道题竟然是最大公约数的变形题目,只要首先判断一下分子分母额最大公约数是不是1,就可以确定这个分数是否符合题意,那么我们先写一个最大公约数的判断方法即可

func maxCommonMeasure(num1:Int, num2:Int) -> Bool{    

    var toup = (num1,num2)    

    while toup.1 != 0 {        

        toup = (toup.1,toup.0 % toup.1)    

    }         

    return toup.0 == 1 

}

然后在暴力循环一下,时间复杂度是O(n^2)

func simplifiedFractions(_ n: Int) -> [String]{    

       var str: [String] = []    

        for i in 2...n{        

        for j in 1..

            if maxCommonMeasure(num1: i, num2: j){                

                    str.append("\(j)/\(i)")            

                }        

        }    

    }    

return str

}

你可能感兴趣的:(swift 解决leetcode 1447题最简分数问题)