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;
    }
}
相关推荐
老马识途2.0几秒前
java处理接口返回的json数据步骤 包括重试处理,异常抛出,日志打印,注意事项
java·开发语言
2***d8852 分钟前
Spring Boot中的404错误:原因、影响及处理策略
java·spring boot·后端
c***69302 分钟前
Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)
java·spring boot·后端
6***A6633 分钟前
Springboot中SLF4J详解
java·spring boot·后端
五阿哥永琪3 分钟前
Hutool中常用的工具类&真实项目的黄金组合
java
YuTaoShao4 分钟前
【LeetCode 每日一题】1458. 两个子序列的最大点积——(解法三)状态压缩
算法·leetcode·职场和发展
xun-ming7 分钟前
Redis实战之7种数据结构
java
5***846412 分钟前
Spring Boot的项目结构
java·spring boot·后端
SimonKing12 分钟前
基于Netty的TCP协议的Socket客户端
java·后端·程序员
程序员飞哥13 分钟前
几年没面试,这次真的被打醒了!
java·面试