Valid Perfect Square
Given a positive integer num
, write a function which returns True
if num is a perfect square else False
.
Do not
use any built-in library function such as sqrt.Have you met this question in a real interview? YesProblem Correction
Example
For example:
Given num = 16
Returns True
套用二分法模板,注意overflow,要cast成long,时间复杂度O(logN)
public class Solution {
/**
* @param num: a positive integer
* @return: if num is a perfect square else False
*/
public boolean isPerfectSquare(int num) {
// write your code here
long start = 1, end = (long)num;
while(start + 1 < end){
long mid = start + (end -start)/2;
System.out.println(mid + " "+ mid*mid);
if(mid * mid < num){
start = mid;
}
else{
end = mid;
}
}
if(start * start == (long)num || end * end == (long)num)
return true;
return false;
}
}
Last updated