题目链接
难度:简单 类型: 数学
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例1
输入:16
输出:True
示例2
输入:14
输出:False
解题思路
暴力解法
从开始,判断是不是等于num,若不是,加1,直到不小于num,判断是否等于二分查找
不用一个一个递增,用二分法找等差数列
任意一个完全平方数都可以表示成一组奇数序列的和
该方法复杂度和暴力法一样都是O(sqrt(n)),但计算量小一点
代码实现
class Solution(object):
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
i = 1
while num>0:
num -= i
i += 2
return num == 0