刷题Day41|322. 零钱兑换、279. 完全平方数、139.单词拆分

322. 零钱兑换

322. 零钱兑换 - 力扣(LeetCode)

dp[j]:装满容量为j,最少物品为dp[j]

放物品i:dp[j - coins[i]] + 1

dp[j] = min(dp[j - coins[i]] + 1, dp[j]);

dp[0] = 0; dp[非零] = Integer.MAX_VALUE;

思路:完全背包问题。被更新的j说明是当前硬币种类情况下,有硬币能凑成amount = j,我们找凑成的个数最小值。此处的价值每个硬币是1。

注意:只有当dp[j - coins[i]] != max的时候,再更新dp[j],这样才能不断更新”有意义“的dp[j]。

279. 完全平方数

279. 完全平方数 - 力扣(LeetCode)

思路:完全背包问题。和【322、零钱兑换】一样的思路。但是其中不存在要判断dp[j - i]] != max,因为n总能由1(和其他数)构成。

注意:dp[j - i]中的i是完全平方数,不是完全平方数的i会自动跳过。

139.单词拆分 

139. 单词拆分 - 力扣(LeetCode)

思路:dp[i]表示长度为i的字符串是否可以被当前单词组成。初始化非零下标是false。递推公式是现在能否组成单词的状态和之前的状态的与操作。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值