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;
    }
}
相关推荐
spencer_tseng2 分钟前
AffineTransform cannot be resolved
java
freejackman2 分钟前
Java从0到1---基础篇
java·开发语言·后端·idea
y = xⁿ3 分钟前
【LeetCode Hot100】动态规划:T70:爬楼梯 T118:杨辉三角形 T198:打家劫舍
算法·leetcode·动态规划
CQU_JIAKE6 分钟前
4.4【Q】
java·前端·javascript
2301_771717218 分钟前
Java自定义注解创建详解
java·开发语言
艾莉丝努力练剑14 分钟前
【Linux系统:信号】线程安全不等于可重入:深度拆解变量作用域与原子操作
java·linux·运维·服务器·开发语言·c++·学习
人道领域15 分钟前
【LeetCode 刷题日】19.删除链表的倒数第n个节点
算法·leetcode·链表
无心水15 分钟前
20、Spring陷阱:Feign AOP切面为何失效?配置优先级如何“劫持”你的设置?
java·开发语言·后端·python·spring·java.time·java时间处理
QfC92C02p16 分钟前
C# 中的 Span 和内存:.NET 中的高性能内存处理
java·c#·.net
py有趣17 分钟前
力扣热门100题之最大子数组和
算法·leetcode