IOS 算法(中级篇) ----- 统计平方和三元组的数目

一个 平方和三元组 (a,b,c) 指的是满足 a2 + b2 = c2 的 整数 三元组 a,b 和 c 。
给你一个整数 n ,请你返回满足 1 <= a, b, c <= n 的 平方和三元组 的数目。
1 <= n <= 250

例子:

输入:n = 5
输出:2
解释:平方和三元组为 (3,4,5) 和 (4,3,5) 。

输入:n = 10
输出:4
解释:平方和三元组为 (3,4,5),(4,3,5),(6,8,10) 和 (8,6,10) 。

解题思路

方法1 遍历法

由于数目比较小, 1 <= n <= 250, 可以采用for循环遍历方式

n < 5 不存在, 直接报错(最小: n = 5 即 3, 4, 5)
n > 5, 遍历 a, b, c 在 3 ~ n范围内 (其实1 ~ n也可以, 只不过多走几次循环判断)
找到满足a ^ 2 + b ^ 2 = c ^2, 的a, b, c 结果res + 2
因为: a, b 可以互换下位置, c最大位置固定, 循环结束返回结果

未翻译版
    func countTriples(_ n: Int) -> Int {

        if n < 5 { return 0 }
        var res = 0
        for a in 3..
翻译版
    func countTriples(_ n: Int) -> Int {

        // n 小于 5 直接返回0
        if n < 5 { return 0 }

        // 定义结果res
        var res = 0

        // 循环 a, 范围 3 ~ n-1, 其实如果不做n < 5判断, 这里从1开始循环也行
        for a in 3..

当然我们也可以减少一次循环

定义ca * a + b * b 的开方进行判断

    func countTriples(_ n: Int) -> Int {

        if n < 5 { return 0 }
        var res = 0
        for a in 3..

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

你可能感兴趣的:(IOS 算法(中级篇) ----- 统计平方和三元组的数目)