My Seventy-ninth Page - 完全平方数 - By Nicolas
创始人
2024-02-14 21:36:39
0

这篇page是针对leetcode上的279.完全平方数所写的。小尼先简单的说明一下这道题的意思,就是给出一个整数n,返回和为n的完全平方数的最小数量。

其实这道题就是一个典型的完全背包问题,我们可以把给出的整数n看作是背包容量的大小,给出的所有的完全平方数就是我们背包中需要放入的元素,我们在这里需要控制的一点就是我们如何将我们给入dp数组的范围控制好,其实也就是如何将我们的递归的条件控制好。

小尼接下来还是给出递归五部曲:

1、确定dp数组以及下标的含义:dp[j]是和为j的完全平方数的最少数量

2、确定递推公式:dp[j] = min(dp[j - i*i] + 1, dp[j])

3、dp数组如何初始化:dp[0]表示和为0的完全平方数的最小数量,那么dp[0]一定是0

4、确定遍历顺序:我们知道这是个完全背包,但是这道题我们需要求的只是一个数量,所以遍历的顺序也就是我们外层如何遍历以及内层如何遍历都是可以的,小尼等会给出两种遍历的写法

5、再就是导出dp数组

接下来,小尼将给出这道题的解体的代码:

class Solution {// 版本一,先遍历物品, 再遍历背包public int numSquares(int n) {int max = Integer.MAX_VALUE;int[] dp = new int[n + 1];//初始化for (int j = 0; j <= n; j++) {dp[j] = max;}//当和为0时,组合的个数为0dp[0] = 0;// 遍历物品for (int i = 1; i * i <= n; i++) {// 遍历背包for (int j = i * i; j <= n; j++) {if (dp[j - i * i] != max) {dp[j] = Math.min(dp[j], dp[j - i * i] + 1);}}}return dp[n];}
}
class Solution {// 版本二, 先遍历背包, 再遍历物品public int numSquares(int n) {int max = Integer.MAX_VALUE;int[] dp = new int[n + 1];// 初始化for (int j = 0; j <= n; j++) {dp[j] = max;}// 当和为0时,组合的个数为0dp[0] = 0;// 遍历背包for (int j = 1; j <= n; j++) {// 遍历物品for (int i = 1; i * i <= j; i++) {dp[j] = Math.min(dp[j], dp[j - i * i] + 1);}}return dp[n];}
}

上面就是两种循环交替解决的方法。

希望上面的分析和代码可以帮助到小伙伴们~~~

相关内容

热门资讯

古人尊重差异的故事? 古人尊重差异的故事?历史上,因为尊重彼此文化差异而留下千古佳话的例子 并不鲜见。忘不了汉代的张骞通西...
作文 《一只流浪狗的自述》 作文 《一只流浪狗的自述》1.我是一直流浪狗。我以前的主人抛弃我了,我只好在这流浪。 一天早...
小王读一本168页的故事书,前... 小王读一本168页的故事书,前4天读了96页,照这样计算,看完这本书需要多少天?168/(96/4)...
美两名前总统罕见发声 批评特朗... 转自:财联社【美两名前总统罕见发声 批评特朗普政府解散国际开发署】财联社7月1日电,据央视新闻报道,...
中国核工业建设股份有限公司20... 证券代码:601611 证券简称:中国核建 公告编号:2025-042中国核工业建设股份有限公司2...
长沙市一中(湘江科学城校区)完...     长沙市一中(湘江科学城校区)项目航拍图。    通讯员 供图  三湘都市报6月30日讯  6...
北京推进17座重点桥系桥下空间... 转自:千龙网原标题:北京推进17座重点桥系桥下空间提升,计划年底前全面完工 燕莎桥、北苑高架桥等桥下...
芦衣顺母是什么意思 芦衣顺母是什么意思  1、《芦衣顺母》是《论语·先进》中的典故,二十四孝故事之一。主要内容是讲闵损(...
古代“录取通知书”长什么样? □吴德玉荀超张峥清光绪二十年金榜局部图。现藏中国第一历史档案馆《骆成骧殿试策》残本(之一)。  重庆...
国泰聚鑫量化选股混合型发起式证... 重要提示1、国泰聚鑫量化选股混合型发起式证券投资基金(以下简称“本基金”)已获中国证监会证监许可【2...