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

代码随想录算法训练营第四十三天

代码随想录算法训练营第四十三天| 1049. 最后一块石头的重量 II,494. 目标和,474. 一和零

  • 1049. 最后一块石头的重量 II
  • 494. 目标和
  • 474. 一和零

1049. 最后一块石头的重量 II

题目链接:最后一块石头的重量 II
重点:
本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小
和 416. 分割等和子集比较相似

0-1背包要素:

  • 背包体积:sum//2
  • 物品价值:stones[i]
  • 物品重量:stones[i]
  • 物品可以用一次

动态规划要素:

  • dp[i][j] = [0,i]任选石头在背包容量为j的前提下可以达到的最大体积。
  • 之后的都和经典0-1问题一样
class Solution:def lastStoneWeightII(self, stones: List[int]) -> int:# dp[i][j] = [0,i]任选石头在背包容量为j的前提下可以达到的最大体积。target = sum(stones)//2dp = [[0]*(target+1) for _ in range(len(stones))]# 初始化for j in range(target+1):if stones[0] <= j:dp[0][j] = stones[0]for i in range(1,len(stones)):for j in range(1,(target+1)):if stones[i] > j: # 放不进去,就用i之前的元素dp[i][j] = dp[i-1][j]else:dp[i][j] = max(dp[i-1][j], dp[i-1][j-stones[i]]+stones[i])#print(dp[-1][-1])return abs(2*dp[-1][-1]-sum(stones))

一维:
dp[j] = 在背包容量为j的前提下可以达到的最大体积。

class Solution:def lastStoneWeightII(self, stones: List[int]) -> int:# dp[j] = 任选石头在背包容量为j的前提下可以达到的最大体积。target = sum(stones)//2dp = [0]*(target+1)for i in range(len(stones)):for j in range(target,0,-1):if stones[i] <= j:dp[j] = max(dp[j],dp[j-stones[i]]+stones[i])return abs(2*dp[-1]-sum(stones))

494. 目标和

题目链接:目标和

  • dp[i][j] = [0,i]任选元素可以达到j-t的不同表达数目
  • 由于只能加减,范围是-sum(nums)sum(nums)
  • 初始化:dp的第一行,只有一个元素,所以-i或者i等于j代表的和时,就加一
  • 递推公式:每次多加一个元素可以+nums[i]或者-nums[i],所有如果之前的元素可以组成j-t+nums[i]或者j-t-nums[i]的就可以达到j-t,也就是说在如果在dp下标范围内,dp[i][j]的次数就是j-t+nums[i]的次数加上j-t-nums[i]的次数。
    先不降成一维了,自己都搞不清
class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:# dp[i][j] = [0,i]任选元素可以达到j的不同表达数目t = sum(nums)if target > t or target < -t:return 0dp = [[0]*(2*t+1) for _ in range(len(nums))]for j in range(2*t+1):if nums[0] == j-t:dp[0][j] += 1if -nums[0] == j-t:dp[0][j] += 1for i in range(1,len(nums)):for j in range(2*t+1):#print(j-target-nums[i],j-target+nums[i])if j-t-nums[i] >= -t and j-t+nums[i] <= t:#print(1)dp[i][j] += dp[i-1][j-nums[i]] + dp[i-1][j+nums[i]] elif j-t-nums[i] < -t and j-t+nums[i] <= t:#print(2)dp[i][j] += dp[i-1][j+nums[i]] elif j-t-nums[i] >= -t and j-t+nums[i] > t:#print(3)dp[i][j] += dp[i-1][j-nums[i]]return dp[-1][sum(nums)+target]

474. 一和零

题目链接:一和零
这个背包的重量是两维的需要满足0的数量和1的数量。为了不让dp变成三维的试一下之前的一维累加吧。
dp[i][j] = 拥有最多i个0和j个1的最长子集长度。

class Solution:def findMaxForm(self, strs: List[str], m: int, n: int) -> int:# dp[i][j] = 最多拥有i个0和j个1的最长子集长度。dp = [[0]*(m+1) for _ in range(n+1)]for i in range(len(strs)):one = strs[i].count('1')zero = strs[i].count('0')for j in range(n,-1,-1):for k in range(m,-1,-1):if one <= j and zero <= k:dp[j][k] = max(dp[j][k],dp[j-one][k-zero]+1)return dp[-1][-1]     

相关文章:

代码随想录算法训练营第四十三天

代码随想录算法训练营第四十三天| 1049. 最后一块石头的重量 II&#xff0c;494. 目标和&#xff0c;474. 一和零 1049. 最后一块石头的重量 II494. 目标和474. 一和零 1049. 最后一块石头的重量 II 题目链接&#xff1a;最后一块石头的重量 II 重点&#xff1a; 本题其实就是…...

如何在 Mac 和 Windows 上恢复未保存或删除的 PDF

Adobe Acrobat PDF 是一种常用格式。我们可能会在不同的 PDF 编辑器中编辑和保存 PDF 文件。但是&#xff0c;如果不保存 PDF 文件或不小心将其删除&#xff0c;那将是一种令人不安的体验。 保持冷静&#xff01;首先&#xff0c;尽可能多地停止运行应用程序&#xff0c;这样它…...

windows开机不自动挂载磁盘的方法

本人的电脑系统为win11 写作时间20230430 开机不挂载某块磁盘的理由 1.本人电脑上有个仓库盘是机械硬盘&#xff0c;并不是每次开机都要用到&#xff0c;开机不挂载也许有利于增加数据盘的寿命 2.挂载了数据盘&#xff0c;有时候打开文件页面会比较慢&#xff0c;不够丝滑 …...

5 款 AI 老照片修复工具的横向比较

在大语言模型和各类 AI 应用日新月异的今天&#xff0c;我终于下定决心&#xff0c;趁着老照片们还没有完全发黄褪色、受潮粘连抑或损坏遗失&#xff0c;将上一代人实体相册里的纸质胶卷照片全部数字化&#xff0c;并进行一次彻底的 AI 修复&#xff0c;好让这些珍贵的记忆能更…...

2023企业服务的关键词:做强平台底座

作者 | 曾响铃 文 | 响铃说 4月下旬&#xff0c;软件行业相关的大会紧锣密鼓地开了好几场&#xff0c;不仅有政府主办的2023中国国际软件发展大会、中国软件创新发展大会&#xff0c;也有用友、浪潮等服务商举办的品牌活动&#xff0c;让软件业的话题一直保持热度。 以用友为…...

【Linux基本指令和权限(1)】

本文思维导图&#xff1a; 文章目录 一、Linux操作的特点二、使用指令从Xhell登录云服务器三、基本指令1.ls指令2. pwd指令&#xff1a;3.cd指令4. touch指令5. rm指令 写在最后 Linux是一个操作系统&#xff0c;操作系统是一款做软硬件管理的软件。 一、Linux操作的特点 Li…...

虹科新品 | 用于医疗应用的压力和气体流量传感器

ES Systems在创新MEMS方面拥有丰富的经验&#xff0c;设计了高质量和高性能的气体流量和压力传感器&#xff0c;由于其技术规格&#xff0c;出色的可靠性和有竞争力的价格&#xff0c;这些传感器在竞争产品中具有独特的品质。 Part.01 应用背景 众所周知&#xff0c;在医疗领域…...

原生小程序如何使用pdf.js实现查看pdf,以及关键词检索高亮

1.下载pdf.js库文件 前往 pdf.js 的 官网 下载库文件&#xff0c;下哪个版本都可以&#xff0c;后者适用于旧版浏览器&#xff0c;所以我下载的是后者 下载完成后&#xff0c;因为微信小程序打包的限制&#xff0c;我将库文件放到项目的后台系统了&#xff0c;在h5端处理会比在…...

「数据架构」MDM实现失败的主要原因

我经常参与一个组织的MDM程序&#xff0c;当他们在一个失败的项目之后向InfoTrellis请求帮助进行清理&#xff0c;或者开始尝试X&#xff0c;以实现对某些人来说非常困难的目标时。主数据管理实现失败的原因有很多&#xff0c;但是没有一个是由于在这些场景中使用的责备游戏的原…...

【Java基础 1】Java 环境搭建

&#x1f34a; 欢迎加入社区&#xff0c;寒冬更应该抱团学习&#xff1a;Java社区 &#x1f4c6; 最近更新&#xff1a;2023年4月22日 文章目录 1 java发展史及特点1.1 发展史1.2 Java 特点1.2.1 可以做什么&#xff1f;1.2.2 特性 2 Java 跨平台原理2.1 两种核心机制2.2 JVM…...

2023-4-26-C++11新特性之正则表达式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…...

python接口自动化测试 requests库的基础使用

目录 简单介绍 Get请求 Post请求 其他类型请求 自定义headers和cookies SSL 证书验证 响应内容 获取header 获取cookies 简单介绍 requests库简单易用的HTTP库 Get请求 格式&#xff1a; requests.get(url) 注意&#xff1a;若需要传请求参数&#xff0c;可直接在 …...

Photon AI Translator 和做产品的一些思考

近 4 个月内我一直在做 Apple 平台的产品&#xff0c;虽然从使用量来说「简体中文」用户是占多数&#xff0c;但我一直有做多语言的支持&#xff1a;英语、简体中文和繁体中文。习惯上 Google 翻译的我&#xff0c;基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Trans…...

IPTV系统架构的分析与研究

1 引言   IPTV业务是伴随着宽带互联网的飞速发展而兴起的一项新兴的互联网增值业务,它利用宽带互联网的基础设施&#xff0c;以家用电视机和电脑作为主要终端 &#xff0c;利用网络机顶盒(STB,Set -TopBox) &#xff0c;通过互联网协议来传送电视信号.提供包括 电视节 目在 内…...

workerman开发者必须知道的几个问题

1、windows环境限制 windows系统下workerman单个进程仅支持200个连接。 windows系统下无法使用count参数设置多进程。 windows系统下无法使用status、stop、reload、restart等命令。 windows系统下无法守护进程&#xff0c;cmd窗口关掉后服务即停止。 windows系统下无法在一个…...

golang Gin实现websocket

golang使用 Gin实现 websocket&#xff0c;这里笔者重新搭建一个项目 1、创建项目安装依赖 项目名为 go-gin-websocket 在指定文件夹下&#xff0c;新建项目文件夹 go-gin-websocket 进入项目文件夹&#xff0c;打开cmd窗口&#xff0c;在项目&#xff08;go-gin-websocket&a…...

冯·诺依曼体系结构与初始操作系统

目录 冯诺依曼体系结构 冯诺依曼体系结构图 内存 外存 网卡和磁盘 结构之间运算速度的差异 缓冲区 初始操作系统 概念 操作系统上边与下边分别有什么 从上到下依次顺序解析 用户 用户操作接口 系统调用接口 操作系统四项管理 驱动 硬件 冯诺依曼体系结构 冯诺…...

软件测试之黑盒测试的具体方法详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一.基于需求的设计方法二.等价类三.边界值四.判定表4.1 **关系**4.2 如何设计测试用例4.3 实际案例第一步第二步第三步第四步 五.正交排列5.1 什么是正交表5.2 …...

图形编辑器:历史记录设计

大家好&#xff0c;我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录&#xff0c;做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录&#xff0c;支持撤销重做功能&#xff0c;需要两个栈&#xff1a;撤销&#xff0…...

ubuntu22.04下挂载第二块硬盘

文章目录 一、查看硬盘情况二、找到nvme1n1三、挂载四、修改分区文件 一、查看硬盘情况 首先要查看一下系统识别出来的设备。也就是说&#xff0c;我希望知道&#xff0c;ubuntu到底发现了几块硬盘。用命令&#xff1a;lsblk 显示结果如下&#xff1a; 有两块硬盘&#xff1a…...

【MATLAB源码-第439期】基于MATLAB的APSK与QAM高阶调制在Saleh非线性功放下BER和EVM性能对比

操作环境&#xff1a;MATLAB 2024a1、算法描述摘要 高阶数字调制技术是现代无线通信和卫星通信系统提高频谱利用率的重要方法。QAM 调制通过同相分量和正交分量的幅度组合形成二维星座&#xff0c;在较高信噪比条件下能够获得较高的信息承载能力。APSK 调制则采用多环幅相结构&…...

WinMerge对比日志和备份文件?用过滤器精准匹配,效率翻倍

WinMerge对比日志和备份文件&#xff1f;用过滤器精准匹配&#xff0c;效率翻倍 在日常运维和办公场景中&#xff0c;我们经常需要对比不同版本的日志文件或备份文件。比如app.log.1和app.log.2的差异分析&#xff0c;或者report_20240520.xlsx与report_20240521.xlsx的内容比对…...

ChromaControl终极指南:如何用一个软件控制所有RGB设备?[特殊字符]

ChromaControl终极指南&#xff1a;如何用一个软件控制所有RGB设备&#xff1f;&#x1f3ae; 【免费下载链接】ChromaControl 3rd party device lighting support for Razer Synapse. 项目地址: https://gitcode.com/gh_mirrors/ch/ChromaControl 你是否厌倦了桌面上堆…...

告别Nginx配置!用miniserve在Windows/Mac/Linux三分钟内搞定文件共享

告别Nginx配置&#xff01;用miniserve在Windows/Mac/Linux三分钟内搞定文件共享 你是否曾在团队协作时&#xff0c;为了快速分享一个安装包或设计稿&#xff0c;不得不忍受FTP的繁琐配置&#xff1f;或是被Nginx的虚拟主机设置搞得头晕目眩&#xff1f;现在&#xff0c;这一切…...

Beyond Compare 5密钥生成器终极指南:3种简单方法获取永久授权

Beyond Compare 5密钥生成器终极指南&#xff1a;3种简单方法获取永久授权 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 还在为Beyond Compare 5的30天试用期到期而烦恼吗&#xff1f;想要免费…...

体验Taotoken低延迟与高稳定性的模型API调用服务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 体验Taotoken低延迟与高稳定性的模型API调用服务 对于依赖大模型API进行应用开发的团队而言&#xff0c;服务的稳定性和响应速度是…...

网盘直链下载助手:一键获取9大网盘真实下载地址,告别限速烦恼

网盘直链下载助手&#xff1a;一键获取9大网盘真实下载地址&#xff0c;告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中…...

FDTD Solutions 8.0 保姆级上手教程:从软件安装到第一个仿真结果

FDTD Solutions 8.0 零基础实战指南&#xff1a;从安装到首个完整仿真 当你第一次打开FDTD Solutions 8.0时&#xff0c;那些复杂的工具栏和陌生的术语可能会让你望而却步。作为一款专业的光学仿真软件&#xff0c;它确实有着陡峭的学习曲线——但别担心&#xff0c;这正是本文…...

Creo二次开发避坑:用ProAsmcomppathInit搞定装配体遍历,别再卡在ProFeature转ProAsmcomppath了

Creo二次开发实战&#xff1a;高效构建装配体遍历路径的深度解析 在Creo二次开发领域&#xff0c;装配体遍历是许多高级功能的基础操作&#xff0c;但开发者常常会在ProFeature到ProAsmcomppath的转换过程中遭遇瓶颈。本文将从底层数据结构入手&#xff0c;揭示一种被多数文档忽…...

SAP EWM实战:从产品到处理单位,两种库存转移操作保姆级教程

SAP EWM库存转移实战指南&#xff1a;产品与处理单位的精准操作 在仓库管理的日常工作中&#xff0c;库存转移是最基础却最容易出错的环节之一。特别是对于刚接触SAP EWM系统的管理员来说&#xff0c;面对不同形态的物料——散件产品和带包装的处理单位(HU)&#xff0c;往往会产…...