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;
    }
}
相关推荐
muddjsv5 分钟前
Java语言学习路线全解析:从入门到精通的核心模块与进阶路径
java
未若君雅裁9 分钟前
线程池核心参数与执行流程
java·开发语言
东方巴黎~Sunsiny14 分钟前
后端已经开始使用AI代替前端开发了
java·人工智能·状态模式
Sam_Deep_Thinking21 分钟前
结算分摊的策略模式:不同营销活动的扣点计算方案
java·设计模式·架构·系统架构
fengxin_rou37 分钟前
leetcode二维数组高频面试题详解:48.原地旋转矩阵 + 240.杨氏矩阵查找算法深度剖析
数据结构·leetcode·java 算法·面试算法
兰令水42 分钟前
leecodecode【回溯组合】【2026.6.5打卡-java版本】
java·开发语言
8Qi842 分钟前
LeetCode 518:零钱兑换 II(Coin Change II)—— 题解 ✅
java·算法·leetcode·动态规划·完全背包
cfm_291443 分钟前
SpringBoot整合RocketMQ极速实战
java·spring boot·后端
为爱停留43 分钟前
让智能体「记住」对话:Checkpoint 功能、持久化数据接口与 thread_id 详解
java·数据库·elasticsearch
Sylvia33.1 小时前
2026世界杯全套数据API接入教程:WebSocket实时进球推送实例
java·网络·python·websocket·网络协议