class Solution { /* public boolean isPerfectSquare(int num) { int i = 1; while (num > 0) { num -= i; i += 2; } return num == 0; } */ public boolean isPerfectSquare(int num) { int low = 1; int high = num; while (low <= high) { long mid = (low + high) >>> 1; if (mid * mid == num) { return true; } else if (mid * mid < num) { low = (int) mid + 1; } else { high = (int) mid - 1; } } return false; } /* public boolean isPerfectSquare(int num) { long x = num; while (x * x > num) { x = (x + num / x) >> 1; } return x * x == num; } */ }