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;
    }
}
相关推荐
SamDeepThinking7 分钟前
配货单发货数为空告警误报治理:写表延迟复核方案
java·后端·架构
\光辉岁月/14 分钟前
16.JavaSE-反射
java·反射
范什么特西18 分钟前
加深动态代理的理解
java
天天被压力25 分钟前
【Python量化实战宝典 #03】指数与板块行情接口全拆解:大盘·行业·概念一键取(Python 可跑)
java·人工智能·python
\光辉岁月/26 分钟前
14.JavaSE-IOStream
java·io·stream
云和数据.ChenGuang26 分钟前
Spring AI 对接 LangGraph:构建企业级智能体工作流实战
java·人工智能·spring boot·后端·spring
云和数据.ChenGuang31 分钟前
Spring AI 入门实战:构建你的第一个 AI 应用
java·人工智能·深度学习·spring·机器学习·语言模型
下雨天没带伞31 分钟前
Java Stream API实战,告别for循环
java
用户37215742613538 分钟前
Java 高效管理 Excel 批注:添加、读取、修改和删除
java
C语言小火车42 分钟前
C++ 为什么越来越依赖标准库?
java·开发语言·c++