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