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;
    }
}
相关推荐
lkbhua莱克瓦2415 小时前
进阶-SQL优化
java·数据库·sql·mysql·oracle
行稳方能走远15 小时前
Android java 学习笔记 1
android·java
kaico201815 小时前
多线程与微服务下的事务
java·微服务·架构
zhglhy15 小时前
QLExpress Java动态脚本引擎使用指南
java
小瓦码J码16 小时前
使用AWS SDK实现S3桶策略配置
java
廋到被风吹走16 小时前
【Spring】Spring Cloud 配置中心动态刷新与 @RefreshScope 深度原理
java·spring·spring cloud
牧小七16 小时前
springboot 配置访问上传图片
java·spring boot·后端
Swift社区16 小时前
LeetCode 472 连接词
算法·leetcode·职场和发展
Dream it possible!16 小时前
LeetCode 面试经典 150_二分查找_搜索旋转排序数组(114_33_C++_中等)
c++·leetcode·面试
涵涵(互关)16 小时前
JavaScript 对大整数(超过 2^53 - 1)的精度丢失问题
java·javascript·vue.js