给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16
输出:True
示例 2:
输入:14
输出:False
最开始想到的是使用sqrt()
直接判断,什么?不能使用sqrt()?
不能使用任何内置的库函数,所以使用math.log的方案也挂掉了,老老实实去凑吧
1 | def func(num): |
虽然我觉得他肯定要卡你时间复杂度
果然后面他给我报错,MemoryError
不过是发生在Line 7
也就是for i in range(1,num//2):
这一行就让我感觉有点意外
后来看到了公式,有点东西
4 = 1+3
9 = 1+3+5
16 = 1+3+5+7
以此类推
n^2 = 1+3+5+……+(2n-1)
所以我们就挨着挨着减下来就好了
1 | def func(num): |
只需要执行n次就可以了