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

代码随想录训练营二刷第四十八天 | 139.单词拆分 背包问题总结

代码随想录训练营二刷第四十八天 | 139.单词拆分 背包问题总结

一、139.单词拆分

题目链接:https://leetcode.cn/problems/word-break/
思路:单词拼字符串,完全背包。定义dp[i],为true表示可以拆分为一或多个单词。可能会出现aba的情况,字典{a, b},所以是排列数,背包在外,物品在内。

class Solution {public boolean wordBreak(String s, List<String> wordDict) {HashSet<String> set = new HashSet<>(wordDict);boolean[] valid = new boolean[s.length() + 1];valid[0] = true;for (int i = 1; i <= s.length(); i++) {for (int j = 0; j < i && !valid[i]; j++) {if (set.contains(s.substring(j, i)) && valid[j]) {valid[i] = true;}}}return valid[s.length()];}
}

二、背包问题总结

背包问题:一维数组,dp[j] = Math.max(dp[j], dp[j-nums[i]] + nums[i])。

01背包遍历顺序:先物品后背包,物品正序,背包逆序。

如若背包正序则会出现同一个物品重复放入,如物品1重量为1,背包空间为1时放入了,背包空间为2时又放入了。
如果先背包后物品,为了避免重复放入背包依然是逆序,背包容量固定时,每种背包容量只能放入一个物品,即为最大的物品,小的物品都放不进来或者被覆盖了。

求组合数排列数:dp[j] += dp[j - nums[i]]

完全背包遍历顺序:物品背包没有先后顺序,物品背包都是正序。因为同一个物品不限量可以放入多次,在背包采用正序中。

完全背包求组合数,物品在外,背包在内。求排列数,背包在外,物品在内。

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

相关文章:

  • 【数据挖掘】2017年 Quiz 1-3 整理 带答案
  • 吃鸡高手必备工具大揭秘!提高战斗力,分享干货,一站满足!
  • 集群化环境前置准备
  • nodejs开发环境搭建
  • C语言qsort函数
  • 如何使用 Hotshot 通过文字生成 GIF 动画
  • 吃鸡高手必备!这些技巧帮你提高战斗力!
  • XV6 操作系统实验
  • leetcode - 双周赛114
  • 【LeetCode刷题笔记】双指针
  • 互联网Java工程师面试题·Memcached 篇·第二弹
  • 特斯拉被称为自动驾驶领域的苹果
  • stm32之HAL库操作PAJ75620
  • 医学影像归档与通讯系统(PACS)系统源码 PACS三维图像后处理技术
  • web漏洞-PHP反序列化
  • Redis-分布式锁
  • 什么时候使用继承,好莱坞原则(设计模式与开发实践 P11+)
  • 蓝桥等考Python组别十四级001
  • TI单芯片毫米波雷达代码走读(二十七)—— 角度维(3D)处理之通道间幅相一致性补偿
  • 数据结构 2.2 单循环链表
  • 矩阵距离——多源BFS
  • 关于在 Notion 中使用 Markdown 语法
  • sigmoid和softmax函数有什么区别
  • 第五章:最新版零基础学习 PYTHON 教程—Python 字符串操作指南(第七节 - Python 中使用 % 进行字符串格式化)
  • 【网络安全 --- 工具安装】VMware 16.0 详细安装过程(提供资源)
  • Eclipse MAT解析headp dump,total size小于file size
  • 【数据挖掘】2022年 Quiz 1-3 整理 带答案
  • AcWing 288. 休息时间,《算法竞赛进阶指南》,环形与后效性处理
  • 一文掌握Linux系统信息查看命令(CPU、内存、进程、网口、磁盘、硬件)
  • UE5.1编辑器拓展【三、脚本化资产行为,删除无引用资产】