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;
    }
}
相关推荐
飞翔中文网1 分钟前
Java学习笔记之注解
java·笔记·学习
cpp_25013 分钟前
P10109 [GESP202312 六级] 工作沟通
数据结构·c++·算法·题解·洛谷·gesp六级
BossFriday3 分钟前
【手撸IM】SycllaDB 消息存储基础
java·分布式·中间件
霸道流氓气质4 分钟前
导入历史跟踪机制实战指南
java·linux·服务器
日取其半万世不竭6 分钟前
Uptime Kuma 应该放哪台机器?
java·docker·容器·https
消失的旧时光-19436 分钟前
Kotlin 协程设计思想(四):launch、async、withContext 到底有什么区别?
java·kotlin·async·launch·withcontext·deferred
夜白宋6 分钟前
【Redis深入】二、高性能
java·前端·redis
ʚ希希ɞ ྀ6 分钟前
全排列 --- 回溯
算法·leetcode·深度优先
空圆小生7 分钟前
Vue3 + Spring Boot 全栈实战:从零搭建在线彩票模拟系统
java·spring boot·后端
devpotato9 分钟前
ArrayList 扩容机制:从源码细节到工程实践
java·list