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

代码随想录刷题第四十三天| 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

代码随想录刷题第四十三天

今天为三道0-1背包问题的变种, 分别有三个小问题

  1. 给定一个容量为j的背包,尽可能装下物品,找到能装下物品的最大价值
    • dp[i][j] = max(dp[i-1][j], dp[i-1][j-nums[i]]+nums[i])
  2. 给定一个容量为j的背包,找到有多少种方法能够装满背包
    • dp[i][j] += dp[i-1][j-nums[i]]
    • 将左上角dp[0][0]初始化为1, 从这一种方法开始往上累加
  3. 给定一个容量为j的背包,找到背包最后装了多少个物品
    • dp[i][j] = max(dp[i-1][j], dp[i-1][j-nums[i]]+1)

最后一块石头的重量II (LC 1049)

题目思路:

在这里插入图片描述

代码实现:

class Solution:def lastStoneWeightII(self, stones: List[int]) -> int:allsum = sum(stones)target = allsum//2dp = [[0 for _ in range(target+1)] for _ in range(len(stones))]if stones[0] <= target:for j in range(stones[0], target+1):dp[0][j] = stones[0]for i in range(1, len(stones)):for j in range (1, target+1):if stones[i] > j:dp[i][j] = dp[i-1][j]else:dp[i][j] = max(dp[i-1][j], dp[i-1][j-stones[i]]+stones[i])return allsum-dp[len(stones)-1][target]*2

目标和 (LC 494)

题目思路:

在这里插入图片描述

代码实现:

class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:allsum =sum(nums)if (allsum+target)%2==1:return 0if allsum < abs(target):return 0     addtarget = (allsum+target)//2dp = [[0 for i in range(addtarget+1)] for _ in range(len(nums))]if nums[0]<=addtarget:dp[0][nums[0]] = 1 if nums[0]!=0:dp[0][0] = 1else:dp[0][0] = 2              for i in range(1, len(nums)):for j in range(addtarget+1):dp[i][j] = dp[i - 1][j]  # 不选取当前元素if nums[i] <= j:dp[i][j] += dp[i-1][j-nums[i]]print(dp)return dp[len(nums)-1][addtarget]

一和零 (LC 474)

题目思路:

在这里插入图片描述

代码实现:

三维dp,会超时

class Solution:def findMaxForm(self, strs: List[str], m: int, n: int) -> int:dp = [[[0 for _ in range(n+1)] for _ in range(m+1) ] for _ in range(len(strs))]zeros, ones = self.count_zeros(strs[0])if zeros<=m and ones<=n:for j in range(zeros, m+1):for k in range(ones, n+1):dp[0][j][k] = 1           for i in range(1, len(strs)):for j in range(m+1):for k in range(n+1):zeros, ones = self.count_zeros(strs[i])dp[i][j][k] = dp[i-1][j][k]  # 不选取当前元素if zeros<=j and ones<=k:dp[i][j][k] = max(dp[i-1][j][k], dp[i-1][j-zeros][k-ones]+1)print(dp)return dp[len(strs)-1][m][n]def count_zeros(self, input_string):count = 0for char in input_string:if char == '0':count += 1return count, len(input_string)-count

二维dp

class Solution:def findMaxForm(self, strs: List[str], m: int, n: int) -> int:dp = [[0 for _ in range(n+1)] for _ in range(m+1)]for i in range(len(strs)):for j in range(m, -1, -1):for k in range(n, -1, -1):zeros, ones = self.count_zeros(strs[i])dp[j][k] = dp[j][k]  # 不选取当前元素if zeros<=j and ones<=k:dp[j][k] = max(dp[j][k], dp[j-zeros][k-ones]+1)return dp[m][n]def count_zeros(self, input_string):count = 0for char in input_string:if char == '0':count += 1return count, len(input_string)-count

相关文章:

  • Java开发+Intellij-idea+Maven+工程构建
  • Mysql in查询优化
  • SpingBoot的项目实战--模拟电商【5.沙箱支付】
  • IO进程线程Day6
  • springboot git配置文件自动刷新失败问题排查
  • IDEA UML图
  • C语言之素数进化论
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • [论文阅读]4DRadarSLAM: A 4D Imaging Radar SLAM System for Large-scale Environments
  • Flutter中的Tree
  • 力扣188. 买卖股票的最佳时机 IV
  • cissp 第10章 : 物理安全要求
  • PHP中excel带图片数据导入
  • Centos 磁盘挂载和磁盘扩容(新加硬盘方式)
  • <HarmonyOS第一课>1~10课后习题汇总
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • ➹使用webpack配置多页面应用(MPA)
  • 07.Android之多媒体问题
  • 0x05 Python数据分析,Anaconda八斩刀
  • 11111111
  • CSS实用技巧干货
  • dva中组件的懒加载
  • Go 语言编译器的 //go: 详解
  • js数组之filter
  • laravel with 查询列表限制条数
  • Lsb图片隐写
  • Vue UI框架库开发介绍
  • zookeeper系列(七)实战分布式命名服务
  • 成为一名优秀的Developer的书单
  • 分布式任务队列Celery
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 来,膜拜下android roadmap,强大的执行力
  • 前端攻城师
  • 如何在 Tornado 中实现 Middleware
  • 无服务器化是企业 IT 架构的未来吗?
  • 协程
  • 正则与JS中的正则
  • 阿里云服务器购买完整流程
  • 数据库巡检项
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • %check_box% in rails :coditions={:has_many , :through}
  • (¥1011)-(一千零一拾一元整)输出
  • (2)nginx 安装、启停
  • (4)事件处理——(7)简单事件(Simple events)
  • (C++17) std算法之执行策略 execution
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (转)http-server应用
  • .net 流——流的类型体系简单介绍
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET建议使用的大小写命名原则
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc