原题链接
279. 完全平方数
思路
这道题跟之前的动态规划有些区别。刷了不少动态规划的题目。大部分的结构,都是类似于这种形式
dp[i] = Math.max(min)(dp[i-n]+k, dp[i-m]+k1) + M
这种形式,涉及到最大小值,肯定涉及到题目求解的最值问题
而且一般绝大多数情况下是,时间复杂度都是O(n)。
这次的题目,主要涉及到一些关键点的处理。
如果不考虑这些关键点,无非就是
dp[i] 表示数字为i的时候,最少的平方数字组成,也就问题所要的答案
dp[i] = dp[i-1] + 1(数字i-1加上1,就可以得到i)
关键点
不考虑平方数的时候,比如当 n = 4 的时候,dp[4] = dp[3]+1
但是如果考虑平方数的话,dp[4] = 2^2
然后就一直纠结关键点怎么处理。看了题解,用了遍历。
遍历
for(int i = 1; i <= n; i