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;
    }
}
相关推荐
做个文艺程序员6 分钟前
Spring Boot 封装 OpenClAW 服务层最佳实践【OpenClAW + Spring Boot 系列 第2篇】
java·人工智能·spring boot·开源
说实话起个名字真难啊17 分钟前
2026数字中国创新大赛数字安全赛道writeup之web题目一
java·前端·安全
后端AI实验室17 分钟前
我用AI把一个外包需求从30天压到5天交付,然后客户说:下次还找你
java·ai
biubiubiu070626 分钟前
ChatModel 与 ChatClient 关系完整指南
java
0xDevNull41 分钟前
Java 深度解析:for 循环 vs Stream.forEach 及性能优化指南
java·开发语言·性能优化
博风1 小时前
在tomcat应用里添加了一个线程池对象,向这个线程池发送任务,让其执行。 我希望在tomcat停机时,能等待线程池里的任务执行完了再停机,要如何实现?
java·tomcat
studyForMokey1 小时前
【Android面试】Java专题 todo
android·java·面试
一只大袋鼠1 小时前
MyBatis 特性(三):缓存、延迟加载、注解开发
java·数据库·笔记·sql·缓存·mybatis
老毛肚1 小时前
Redis高级
java·数据库·redis
小Y._2 小时前
AQS同步器核心原理深度剖析
java·源码分析·juc·aqs