Valid Perfect Square Posted on 2017-07-24 | In Java , Algorithm | 经典的二分查找 123456789101112public boolean isPerfectSquare (int num){ if (num < 1) return false; //0为啥不算? long lo = 1; long hi = num; //避免 2147483647 while (lo <= hi){ long mid = (lo + hi) / 2; long tem = mid * mid; if (tem == num) return true; if (tem < num) lo = mid+1; else hi = mid-1; } return false;} 牛顿迭代法 12345678public boolean isPerfectSquare (int num){ if (num < 1) return false; long x = num; while (x * x > num){ x = (x + num/x) / 2; } return x * x == num;} 还有个神奇的算法,完全平方数都是由 1+3+5+7…构成,所以可以写成 12345678public boolean isPerfectSquare(int num){ int i=1; while (num > 0){ num -= i; i += 2; } return num == 0;}