继续刷LeetCode,第367题,判断一个整数是否可以开平方根。
分析:
判断一个数是否可以开平方,那么就是从1开始遍历,判断它的平方是否等于该数,这就变成了一个有序查找,如何快速找到这个平方根的数。最好的办法就是利用二分查找。另外Python提供了可以求根号的方式,可以直接求出结果是否满足。
问题:
1、对于这样的题目,时间开销是需要考虑的问题,如何快速查找;
2、对于大数的情况,要考虑进去;
3、利用Python中pow求平方的功能。
附上C++代码:
class Solution {
public:
bool isPerfectSquare(int num) {
long long l=1;
long long r=num;
while(l<=r)
{
long long mid=(l+r)/2;
if(mid*mid==num)
return true;
else if(mid*mid<num)
l=mid+1;
else
r=mid-1;
}
return false;
}
};
附上Python代码1:
class Solution:
def isPerfectSquare(self, num: int) -> bool:
low,high=1,num
while low<=high:
mid=(low+high)//2
if mid*mid==num:
return True
elif mid*mid<num:
low=mid+1
else:
high=mid-1
return False
附上Python代码2:
class Solution:
def isPerfectSquare(self, num: int) -> bool:
sq=int(pow(num,0.5))
if sq*sq==num:
return True
else:
return False