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;
    }
}
相关推荐
谷粒.8 小时前
Cypress vs Playwright vs Selenium:现代Web自动化测试框架深度评测
java·前端·网络·人工智能·python·selenium·测试工具
uzong11 小时前
程序员从大厂回重庆工作一年
java·后端·面试
kyle~11 小时前
C++---value_type 解决泛型编程中的类型信息获取问题
java·开发语言·c++
开心香辣派小星15 小时前
23种设计模式-15解释器模式
java·设计模式·解释器模式
Halo_tjn15 小时前
虚拟机相关实验概述
java·开发语言·windows·计算机
摆烂z16 小时前
Docker与Jib(maven插件版)实战
java
RainbowSea16 小时前
从 Spring Boot 2.x 到 3.5.x + JDK21:一次完整的生产环境迁移实战
java·spring boot·后端
笨手笨脚の16 小时前
Spring Core常见错误及解决方案
java·后端·spring
奶油松果16 小时前
Springboot自动装配 - redis和redission
java·spring boot·redis
霍夫曼16 小时前
UTC时间与本地时间转换问题
java·linux·服务器·前端·javascript