目录

0367:有效的完全平方数

力扣第 367 题

题目

给你一个正整数 num 。如果 num 是一个完全平方数,则返回 true ,否则返回 false

完全平方数 是一个可以写成某个整数的平方的整数。换句话说,它可以写成某个整数和自身的乘积。

不能使用任何内置的库函数,如 sqrt

示例 1:

输入:num = 16
输出:true
解释:返回 true ,因为 4 * 4 = 16 且 4 是一个整数。

示例 2:

输入:num = 14
输出:false
解释:返回 false ,因为 3.742 * 3.742 = 14 但 3.742 不是一个整数。

提示:

  • 1 <= num <= 231 - 1

分析

  • 类似 0069,找到平方根取整后,判断其平方是否等于 num 即可
  • 找平方根可以用二分查找,也可以用牛顿迭代法

解答

1
2
3
4
5
6
class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        i = num
        while i * i > num:
            i = (i+num//i) // 2
        return i * i == num

28 ms