题目简单
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
说明:不要使用任何内置的库函数,如 sqrt。
示例 1:
输入:16
输出:True
示例 2:
输入:14
输出:False
c解答
1.
利用完全平方数的性质 ,即:
1=1
4=1+3
9=1+3+5
.....
等等
代码:
bool isPerfectSquare(int num){
if(num == 0)
return false;
int i = 1;
while(num>0){
num-=i;
i+=2;
}
if(num==0)
return true;
return false;
2.
利用二分法的思维,也就是设置一个上界一个下界,一直判断知道不合符判断条件为止
bool isPerfectSquare(int num){
long long left=0,right=num/2+1,mid=0;
while(left<=right){
mid=(left+right)/2;
if(mid*mid<num) left=mid+1;
else if(mid*mid>num)
right=mid-1;
else
break;
}
if(left>right)
return false;
return true;
}
判处条件为左界是否大于右界。
python解答
1.
代码:
该代码不是我的代码,是我看到的一个题解,因为我的代码分数属实有点低,就不拉出来丢人了😂
class Solution:
def isPerfectSquare(self, num: int) -> bool:
new_num = int(num ** 0.5)
return True if abs(new_num ** 2 - num) < 0.00000001 else False