有效的完全平方数

给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。

说明:不要使用任何内置的库函数,如 sqrt

示例 1:

1
2
输入:16
输出:True

示例 2:

1
2
输入:14
输出:False

代码

自己的方法

1
2
3
4
5
6
7
8
9
10
public boolean isPerfectSquare(int num) {
int one=1;
int two=num;
while(one<=two){
two=num/one;
if(one==two&&one*two==num)return true;
one++;
}
return false;
}

评论中更好的办法

1
2
3
4
5
6
7
8
9
10
public boolean isPerfectSquare(int num) {
int i = 0, j = num;
while (i <= j){
int mid = i + (j - i) / 2;
if (mid > num * 1.0 / mid) j = mid - 1;
else if (mid < num * 1.0 / mid) i = mid + 1;
else return true;
}
return false;
}