当前位置: 首页 > news >正文

代码随想录算法训练营第三十八天| 322. 零钱兑换 279.完全平方数 139.单词拆分

322. 零钱兑换

动态规划五部曲:

1.dp数组

dp[j]表示装满容量为j的背包,0-i硬币需要的最少个数

2.递推公式

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

3.初始化

dp[0]=0,dp[j]初始化最大值

4.遍历顺序,无所谓的

class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp = [0]*(amount+1)for j in range(1,amount+1):dp[j] = float('inf')for i in range(len(coins)):for j in range(amount+1):if j < coins[i]:dp[j]=dp[j]else:dp[j]=min(dp[j],dp[j-coins[i]]+1)return dp[-1] if dp[-1]!=float('inf') else -1

 279.完全平方数

动态规划五部曲:

1.dp数组

dp[j]表示装满背包为j 的数组,从0-i最少需要多少个数字

2.递推公式

dp[j] = min(dp[j],dp[j-num]+1)

3.初始化

dp[0]=1

4.遍历顺序,因为我们要求的是最小的数量,顺序是无所谓的

解析代码

class Solution:def numSquares(self, n: int) -> int:dp = [float('inf')] * (n + 1)dp[0] = 0for i in range(1, int(n ** 0.5) + 1):  # 遍历物品for j in range(i * i, n + 1):  # 遍历背包# 更新凑成数字 j 所需的最少完全平方数数量dp[j] = min(dp[j - i * i] + 1, dp[j])return dp[n]

139.单词拆分

因为看到单词可以重复使用,因此考虑是完全背包问题

动态规划五部曲:

1.dp数组

dp[j] 表示,这里有点儿没想清楚,直接看看解析吧

dp[j]表示字符串长度为j,如果可以拆分,则为True,如果不行则为False

2.递推公式

dp[j]

如果说dp[i]是True而且,[i,j]之间的子串出现在字典里面,那么就是True

3.除了dp[0]都是false

4.遍历顺序,也无所谓

为什么这里解析里面写的是排列问题呢,难道能组成这个不是个组合问题么

class Solution:def wordBreak(self, s: str, wordDict: List[str]) -> bool:dp = [False]*(len(s)+1)dp[0]=Truefor i in range(1,len(s)+1):for j in range(i):if dp[j]==True and s[j:i] in wordDict:dp[i] = Truereturn dp[-1]

我感觉这个遍历顺序的关系,不是因为是排列还是组合问题,而是因为包含问题

class Solution:def wordBreak(self, s: str, wordDict: List[str]) -> bool:dp = [False]*(len(s)+1)dp[0]=Truefor i in range(len(s)+1):for j in range(i+1,len(s)+1):#这里要确定下j的遍历范围if dp[i]==True and s[i:j] in wordDict:dp[j] = Truereturn dp[-1]

http://www.lryc.cn/news/595049.html

相关文章:

  • 数据结构自学Day11-- 排序算法
  • 归并排序:优雅的分治排序算法(C语言实现)
  • 【开源】基于 C# 编写的轻量级工控网关和 SCADA 组态软件
  • 45.sentinel自定义异常
  • C++ Lambda 表达式详解:从基础到实战
  • Leetcode力扣解题记录--第189题(巧思数组翻转)
  • Docker安装Elasticsearch 7.17.0和Kibana 7.17.0并配置基础安全
  • 表单校验--数组各项独立校验
  • 计算机发展史:晶体管时代的技术飞跃
  • Web LLM 安全剖析:以间接提示注入为核心的攻击案例与防御体系
  • WinForm-免费,可商用的WinForm UI框架推荐
  • 03-虚幻引擎蓝图类的各父类作用讲解
  • 农村供水智慧化管理系统:从精准监测到智能调度,破解农村用水安全与效率难题
  • Python Locust库详解:从入门到分布式压力测试实战
  • 开发避坑短篇(3):解决@vitejs plugin-vue@5.0.5对Vite^5.0.0的依赖冲突
  • 5G/4G PHY SoC:RNS802,适用于集成和分解的小型蜂窝 RAN 架构。
  • Linux网络信息(含ssh服务和rsync)
  • 模型系列(篇一)-Bert
  • Kotlin 高阶函数初步学习
  • 【MySQL】Linux配置MySQL Windows远程连接
  • 步进电机基础
  • 基于 Nginx 搭建 OpenLab 多场景 Web 网站:从基础配置到 HTTPS 加密全流程
  • ORA-00600: internal error code, arguments: [krse_arc_source_init.1], [4], [2]
  • 汽车售后诊断仪DoIP和CANBus诊断指令分析
  • Milvus:开源向量数据库的初识
  • HTTP性能优化:打造极速Web体验的关键策略
  • Python 进阶(五): Excel 基本操作
  • Android 版本与 API 级别对照速查表
  • Go语言进阶书籍:Go语言高级编程(第2版)
  • Spring Boot05-热部署