给出一个正整数 num
,写一个函数,要求当这个当num
为完全平方数时函数返回True
,否则返回False
样例
样例1:
输入: num = 16
输出: True
解释:
sqrt(16) = 4
样例2:
输入: num = 15
输出: False
解释:
sqrt(15) = 3.87
注意事项
不要
用诸如sqrt的库函数
class Solution {
public:
/**
* @param num: a positive integer
* @return: if num is a perfect square else False
*/
bool isPerfectSquare(int x) {
// write your code here
long left = 1;
long right = x;
while(left <= right)
{
long mid = (left + right) / 2;
long tmp = x / mid;
if(tmp == mid)
return (mid*mid == x);
else if(tmp > mid)
{
left = mid + 1;
}
else if(tmp < mid)
{
right = mid - 1;
}
}
return (right*right == x);
}
};