LeetCode 题解:279. 完全平方数,动态规划,JavaScript,详细注释

原题链接:279. 完全平方数
解题思路:
本题类似于322. 零钱兑换,如果你对
322. 零钱兑换不熟悉,可以先看[题解](https://leetcode-cn.com/problems/coin-change/solution/leetcodeti-jie-322-ling-qian-dui-huan-do-etlo/)。二者的区别是硬币种类不固定,在本题中,对于当前金额i,硬币种类为小于i的完全平方数。该题递推的是从
1开始,使用小于i完全平方数,计算能够凑到i的最小数量,由此不断累加到n的过程。创建一个长度为
n + 1的dp数组,用索引就表示从0到n的数字。对于当前数字
i,我们可以用for (let j = 1; j * j <= i; j++) {},计算出小于i的完全平方数。i是由i - j * j用 1 个j * j凑过来,同时要保证它是所有结果中最小的一个,因此状态转移返程为:dp[i] = Math.min(dp[i], dp[i - j * j] + 1);。
复制代码
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/bb8ad7262801b62d567c26bc3】。文章转载请联系作者。











评论