码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • leetcode 刷题 log day 46(背包总结篇


    • 139. 单词拆分
      【思路】s 看作背包,wordDict 里的每个元素看作物品,看是否能放满背包,因为可以重复选择元素,所以为完全背包问题。截取 s 中与 wordDict 元素相同长度的字符串,然后比对,如果相同,则为 true。

      var wordBreak = function(s, wordDict) {
          let dp = new Array(s.length + 1).fill(false);
          dp[0] = true;
      
          for (let i = 0; i <= s.length; i++) {
              for (let j = 0; j < wordDict.length; j++) {
                  if (i >= wordDict[j].length) {
                      if (s.slice(i - wordDict[j].length, i) === wordDict[j] && dp[i - wordDict[j].length]) dp[i] = true 
                  }
              }
          }
      return dp[s.length];
      };
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

    【背包总结】

    • 动规五部曲
      1. 确定 dp 数组及其下标的含义;
      2. 确定递推公式;
      3. dp 数组如何初始化;
      4. 确定遍历顺序;
      5. 举例推导 dp 数组

    • 确定地推公式

      • 问能否装满背包或最多装多少:dp[j] = Math.max(dp[j], dp[j - nums[i]] + nums[i])
      • 问装满背包有几种方法:dp[j] += dp[j - nums[i]]
      • 问装满背包最大价值:dp[j] = Math.max(dp[j], dp[j - nums[i]] + value[i])
      • 问装满背包所需的最少数量:dp[j] = Math.min(dp[j], dp[j - conis[i]] + 1)
    • 遍历顺序

      • 01 背包: 二维数组解法中,先遍历物品和先遍历背包都可以,且第二层 for 循环是从前到后遍历,一维滚动数组是必须先遍历物品后遍历背包,且背包从后往前遍历;
      • 完全背包求个数: 先遍历背包或先遍历物品都可以,且内层循环从左往右遍历;
      • 完全背包求组合: 先遍历物品后遍历背包;
      • 完全背包求排列: 先遍历背包后遍历物品;
  • 相关阅读:
    中国微信生态行业投资价值分析及发展趋势预测报告
    10分钟SkyWalking与SpringBoot融合并整合到Linux中
    【LeetCode题目详解】第九章 动态规划part17 647. 回文子串 ● 516.最长回文子序列(day57补)
    netty系列之:protobuf在UDP协议中的使用
    url相关知识点
    [EI复现】基于主从博弈的新型城镇配电系统产消者竞价策略(Matlab代码实现)
    http1.1 的默认长连接 Connection: keep-alive 与 TCP KeepAlive 之间区别
    微信小程序:uniapp解决上传小程序体积过大的问题
    【App自动化测试】(四)Capability配置参数说明
    【2020】【论文笔记】超表面:多功能和可编程——
  • 原文地址:https://blog.csdn.net/weixin_44473700/article/details/128067264
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号