求完全平方

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;

}

posted @ 2026-04-21 22:09  鬼计i  阅读(2)  评论(0)    收藏  举报