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
}
相关推荐
wsoz1 小时前
Leetcode普通数组-day5、6
c++·算法·leetcode·数组
y = xⁿ1 小时前
【LeetCode】双指针:同向快慢针
算法·leetcode
codeejun1 小时前
每日一Go-44、Go网络栈深度拆解--从 TCP 到 HTTP 的资源复用艺术
网络·tcp/ip·golang
倦王1 小时前
力扣日刷47
算法·leetcode·职场和发展
Q741_1472 小时前
每日一题 力扣 3655. 区间乘法查询后的异或 II 模拟 分治 乘法差分法 快速幂 C++ 题解
c++·算法·leetcode·模拟·快速幂·分治·差分法
GDAL2 小时前
Go Channel `close()` 深入全面讲解
golang·通道·close
abant23 小时前
leetcode 239 单调队列 需要一些记忆
算法·leetcode·职场和发展
Tomhex4 小时前
Golang内置函数总结
golang·go
XMYX-04 小时前
05 - Go 的循环与判断:语法、用法与最佳实践
开发语言·golang
Little At Air5 小时前
LeetCode 30. 串联所有单词的子串 | 困难 C++实现
算法·leetcode·职场和发展