LeetCodeHot100-279-完全平方数
题目
给你一个整数 n
,返回 和为 n
的完全平方数的最少数量 。
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1
、4
、9
和 16
都是完全平方数,而 3
和 11
不是。
示例 1:
1 | 输入:n = 12 |
示例 2:
1 | 输入:n = 13 |
提示:
1 <= n <= 104
题解
同样的 DP 题,这里 i 最大的值其实是 sqrt(n) + 1
,从这个值进行找就行了。
1)递归公式:如果当前的剩余值,比 i * i
的值要小,就用 i - 1
继续找,否则就 j - (i * i)
,然后次数要加 1。
2)初始化两个值:如果 i 为 0(没有可用的数了),j 为 0 时,说明不需要凑,就可以得到 0 了,直接返回 0 即可;否则 j 不为 0 时,就说明凑不出来了。
Python
1 |
|
运行结果
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Excelius's World!