求完全平方
1.public static boolean isPerfectSquare(int num) {
if (num < 0) return false; // 负数不可能是完全平方数
if (num == 0) return true; // 0 是完全平方数
// 1. 开方
double sqrt = Math.sqrt(num);
// 2. 取整
int intSqrt = (int) sqrt;
// 3. 验证:整数的平方是否等于原数
return intSqrt * intSqrt == num;
}
2.public static boolean isPerfectSquare(int num) {
if (num < 0) return false;
if (num == 0 || num == 1) return true;
long left = 1;
long right = num / 2; // 平方根一定小于 num/2 (对于 num > 2)
while (left <= right) {
long mid = left + (right - left) / 2;
long square = mid * mid;
if (square == num) {
return true;
} else if (square < num) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return false;
}
浙公网安备 33010602011771号