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;
    }
}
相关推荐
沐雪轻挽萤4 分钟前
17. C++17新特性-并行算法 (Parallel Algorithms)
java·开发语言·c++
StockTV16 分钟前
SpringBoot对接黄金白银期货数据API
java·spring boot·后端
hsjcjh27 分钟前
窗口函数-详细讲解分析
java·服务器·前端
东北甜妹1 小时前
Redis Cluster 操作命令
java·开发语言
消失的旧时光-19431 小时前
Spring Boot 核心机制之 @Conditional:从原理到实战(一次讲透)
java·spring boot·后端
石榴树下的七彩鱼1 小时前
智能抠图 API 接入实战:3 行代码实现图片自动去背景(Python / Java / PHP / JS)
java·图像处理·人工智能·python·php·api·抠图
知兀1 小时前
【Result类】(使用/不使用<T> data的情况);自带静态方法、纯数据类;
java·开发语言
Seven971 小时前
【从0到1构建一个ClaudeAgent】协作-自主Agent
java
洋不写bug1 小时前
Java线程(三):线程执行顺序问题、可重入锁、加锁操作解析,死锁解决
java·开发语言
lifallen2 小时前
Flink Source / Sink Exactly-Once 边界分析
java·大数据·flink