Java | Leetcode Java题解之第279题完全平方数

题目:

题解:

java 复制代码
class Solution {
    public int numSquares(int n) {
        if (isPerfectSquare(n)) {
            return 1;
        }
        if (checkAnswer4(n)) {
            return 4;
        }
        for (int i = 1; i * i <= n; i++) {
            int j = n - i * i;
            if (isPerfectSquare(j)) {
                return 2;
            }
        }
        return 3;
    }

    // 判断是否为完全平方数
    public boolean isPerfectSquare(int x) {
        int y = (int) Math.sqrt(x);
        return y * y == x;
    }

    // 判断是否能表示为 4^k*(8m+7)
    public boolean checkAnswer4(int x) {
        while (x % 4 == 0) {
            x /= 4;
        }
        return x % 8 == 7;
    }
}
相关推荐
bemyrunningdog16 分钟前
IntelliJ IDEA导出WAR包全指南
java·ide·intellij-idea
玖剹21 分钟前
二叉树递归题目(一)
c语言·c++·算法·leetcode
虫师c24 分钟前
List vs Set:深入剖析Java两大集合的核心区别与实战应用
java·数据结构·list·set·java集合
沧澜sincerely24 分钟前
BFS & 图论【各种题型+对应LeetCode习题练习】
leetcode·图论·广度优先
emiya_saber25 分钟前
Linux 硬盘分区管理
java·linux·网络
不穿格子的程序员37 分钟前
从零开始写算法——二分-寻找旋转排序数组中的最小值
数据结构·算法·leetcode·二分查找
小白程序员成长日记38 分钟前
2025.11.13 力扣每日一题
算法·leetcode·职场和发展
量子炒饭大师38 分钟前
【一天一个计算机知识】—— 【编程百度】预处理指令
java·开发语言
q***518942 分钟前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
任子菲阳1 小时前
学Java第四十四天——Map实现类的源码解析
java·开发语言