Solution 1: 二分法
/*
* @lc app=leetcode id=367 lang=java
*
* [367] Valid Perfect Square
*/
class Solution {
public boolean isPerfectSquare(int num) {
long l = 1;
long h = num;
while(l <= h){
long mid = l + (h - l) / 2;
long t = mid * mid;
if(t < num){
l = mid + 1;
}else if(t == num){
return true;
}else{
h = mid - 1;
}
}
return false;
}
}
Solution 2 : 牛顿法
/*
* @lc app=leetcode id=367 lang=java
*
* [367] Valid Perfect Square
*/
class Solution {
public boolean isPerfectSquare(int num) {
if(num == 1) return true;
long t = num / 2;
while(t * t > num){
t = (t + num / t) / 2;
}
return t * t == num;
}
}