不能使用內置函數sqrt等等
正數num的平方根位於1到num/2之間,可以考慮使用二分查找,不過定義一些變量時需要使用long long int。
class Solution {
public:
bool isPerfectSquare(int num) {
if(num==1)
return true;
else
{
return binarySearch(1,num/2,num);
}
}
bool binarySearch(long long int left,long long int right,int num)
{
long long int mid;
while(left<=right)
{
mid=(left+right)/2;
if(mid*mid==num)
return true;
else if(mid*mid<num)
{
left=mid+1;
}
else
{
right=mid-1;
}
}
return false;
}
};