leetcode_367 有效的完全平方数

142 阅读1分钟

要求

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

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

示例 1:

输入:num = 16
输出:true

示例 2:

输入:num = 14
输出:false

核心代码

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        l = 1
        h = num 
        while l <= h:
            mid = (l + h) // 2
            t = mid ** 2
            if t < num:
                l = mid + 1
            elif t == num:
                return True
            else:
                h = mid -1
        return False

另一解法

class Solution:
    def isPerfectSquare(self, num: int) -> bool:
        i = 1
        while num > 0:
            num -= i
            i += 2
        return num == 0

image.png

解题思路:第一种解法:我们使用二分法的方法进行解题;第二种解法数学性质,通过列举所有的完全平方数,1,4,9,16,25,36,49,64,81,100…等等,发现完全平方数的差都为奇数,即1,3,5,7,9,11,13,15…等等~所以可以判断完全平方数应该是N个奇数的和。