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..<i{            

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

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

                }        

        }    

    }    

return str

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。