Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as sqrt.
Example 1:
Input: 16
Returns: True
Example 2:
Input: 14
Returns: False
还是牛顿法,然后算出的根号结果-整数部分小于某个精度就ok
class Solution {
public:
bool isPerfectSquare(int num) {
double D = (double)num;
double xi = (1 + D) / 2;
double delta = D - xi;
while(delta > 0.1){
double z = (xi + D / xi) / 2;
delta = xi - z;
xi = z;
}
if((xi - (int)xi) < 0.01)
return true;
else
return false;
}
};