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;
    }
}
相关推荐
郑州光合科技余经理3 分钟前
海外版外卖系统:如何快速搭建国际化外卖平台
java·开发语言·前端·人工智能·小程序·系统架构·php
Yvonne爱编码8 分钟前
JAVA EE初阶---DAY 1 计算机是如何工作的
java·java-ee
sheeta19989 分钟前
LeetCode 每日一题笔记 日期:2026.06.04 题目:3751. 范围内总波动值 I
笔记·算法·leetcode
用户75088370619518 分钟前
大二的我手写了一把内存锁,最后却败给了 MySQL 的 MVCC?
java
plainGeekDev21 分钟前
Handler/Looper → Coroutines
android·java·kotlin
lulu121654407824 分钟前
2026年-企业级大模型API网关实战指南: 微元算力聚合平台性能优化实测
java·人工智能·spring·性能优化·ai编程
ai_coder_ai25 分钟前
如何在自动化脚本中实现定时操作?
java·前端·javascript
8Qi827 分钟前
LeetCode 746:使用最小花费爬楼梯 —— 题解笔记
java·笔记·算法·leetcode·动态规划
用户2986985301427 分钟前
Java 操作 Word 文档:常见编辑功能实现
java·后端
Sunia31 分钟前
《Agentx专栏》06-记忆系统:用Redis+Milvus给AI配上短期+长期双层记忆
java·架构