leetcode 题解 swift 有效的完全平方数-kb88凯时官网登录

来自:网络
时间:2023-07-25
阅读:
目录

题目

给定一个 正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 true,否则返回 false

进阶:不要 使用任何内置的库函数,如 sqrt

示例 1:

输入: num = 16

输出: true

示例 2:

输入: num = 14

输出: false

方法一:使用内置的库函数

思路及解法

根据完全平方数的性质,我们只需要直接判断 num\textit{num}num 的平方根 xxx 是否为整数即可。对于不能判断浮点数的值是否等于整数的语言,则可以通过以下规则判断:

leetcode 题解 swift 有效的完全平方数

class solution {
    func isperfectsquare(_ num: int) -> bool {
        let x: int = int(sqrt(double(num)))
        return x * x == num
    }
}

复杂度分析

代码中使用的 pow 函数的时空复杂度与 cpu 支持的指令集相关,这里不深入分析。

方法二:暴力

思路及解法

leetcode 题解 swift 有效的完全平方数

代码

class solution {
    func isperfectsquare(_ num: int) -> bool {
        var x: int = 1
        var square: int = 1
        while square <= num {
            if square == num {
                return true
            }
            x  = 1
            square = x * x
        }
        return false
    }
}

复杂度分析

leetcode 题解 swift 有效的完全平方数

方法三:二分查找

思路及解法

leetcode 题解 swift 有效的完全平方数

细节

leetcode 题解 swift 有效的完全平方数

代码

class solution {
    func isperfectsquare(_ num: int) -> bool {
        var left: int = 0
        var right: int = num
        while left <= right {
            let mid = (right - left) / 2   left
            let square = mid * mid
            if square < num {
                left = mid   1
            } else if square > num {
                right = mid - 1
            } else {
                return true
            }
        }
        return false
    }
}

复杂度分析

  • 时间复杂度:o(log⁡n),其中 n为正整数 num 的最大值。
  • 空间复杂度:o(1)。

以上就是leetcode 题解 swift 有效的完全平方数的详细内容,更多关于swift 有效完全平方数的资料请关注其它相关文章!

返回顶部
顶部
网站地图