Golang | Leetcode Golang题解之第279题完全平方数

题目:

题解:

Go 复制代码
// 判断是否为完全平方数
func isPerfectSquare(x int) bool {
    y := int(math.Sqrt(float64(x)))
    return y*y == x
}

// 判断是否能表示为 4^k*(8m+7)
func checkAnswer4(x int) bool {
    for x%4 == 0 {
        x /= 4
    }
    return x%8 == 7
}

func numSquares(n int) int {
    if isPerfectSquare(n) {
        return 1
    }
    if checkAnswer4(n) {
        return 4
    }
    for i := 1; i*i <= n; i++ {
        j := n - i*i
        if isPerfectSquare(j) {
            return 2
        }
    }
    return 3
}
相关推荐
洛水水9 小时前
【力扣100题】34.二叉搜索树中第K小的元素
c++·算法·leetcode
_深海凉_9 小时前
LeetCode热题100-翻转二叉树
算法·leetcode·职场和发展
XMYX-09 小时前
27 - Go string 字符串处理与格式化:从底层原理到工程实践
开发语言·golang
lolo大魔王10 小时前
Go 语言原生 SQL 操作 MySQL 超详细全解 + 生产级项目模板(纯官方库无ORM)
数据库·sql·golang
小雅痞11 小时前
[Java][Leetcode simple] 205. 同构字符串
java·算法·leetcode
焜昱错眩..11 小时前
力扣周赛难题 3906.统计网格路径中好整数的数目——自我拆解学习与分析(数位dp上下界的奇妙)
学习·算法·leetcode·动态规划
兰令水11 小时前
topcode【随机算法题】【2026.5.14打卡-java版本】
java·算法·leetcode
小辉同志12 小时前
72. 编辑距离
leetcode·多维动态规划
z2005093012 小时前
今日算法:617,合并二叉树
算法·leetcode
吃着火锅x唱着歌13 小时前
LeetCode 496.下一个更大元素I
算法·leetcode·职场和发展