Use binary search to find if number is perfect square.
1class Solution {
2 public boolean isPerfectSquare(int num) {
3 if (num < 2) return true;
4
5 long left = 2, right = num / 2;
6
7 while (left <= right) {
8 long mid = left + (right - left) / 2;
9 long square = mid * mid;
10
11 if (square == num) {
12 return true;
13 } else if (square < num) {
14 left = mid + 1;
15 } else {
16 right = mid - 1;
17 }
18 }
19
20 return false;
21 }
22}