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

day-42 代码随想录算法训练营 动态规划 part 04

416.分割等和子集

分析:需要总和能分成两半,并且有子集能装满一半
思路:
  • 1.dp存储:容量为j时装入的最大数值和dp[j]
  • 2.dp[j]=max(dp[j],dp[j-nums[i]]+nums[i])  
  • 3.全部初始化为0
  • 4.遍历顺序:外层遍历元素,内层遍历重量

2:   dp[j]就是上一轮,还没有遍历到当前nums[i]时的最大和,所以相当于不装nums[j]

        dp[j-nums[i]],为啥要 j-nums[i] 的容量呢,因为要满足容量为 j ,所以装之前要找到 容量为 j-nums[i] 装入的最大和,然后装入当前 nums[i] ,总容量才为 j (要是直接dp[j]+nums[i],就会导致容量超过 j 。

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

分析:石头相撞,剩余多出的部分,相当于能分成的最近似的两堆石头
思路:
  • 1.dp存储:先将stones总和求出,求出一半,dp存储的是容量为 j 装的最大重量
  • 2.dp[j]=max(dp[j],dp[j-stones[i]]-stones[i]);
  • 3.初始化:全部初始化为0
  • 4.遍历顺序:外层遍历石头,内层遍历容量
class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int total=0;for(auto it:stones) total+=it;int target=total/2;vector<int>dp(total+1,0);for(int i=0;i<stones.size();i++){for(int j=target;j>=stones[i];j--){dp[j]=max(dp[j],dp[j-stones[i]]+stones[i]);}}return total-dp[target]*2;//装入的最大重量跟剩下的相抵消,剩余的就是最后一块石头}
};

494.目标和(一刷坐牢)

分析:正数总和-负数总和=目标和 -> 正数总和=(目标和+总和)/2
思路:
  • 1.dp存储:当和(容量)为 j 时,有dp [ j ] 中装法 。
  • 2.dp[ j ] =dp [ j - nums [ i ] ] ;
  • 3.初始化:dp [ 0 ] =1 ;
  • 4.遍历顺序:外层遍历数组,内层遍历容量
class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int sum=0;for(int it:nums) sum+=it;if(abs(target)>sum) return 0;//当总和小于目标和的绝对值时,不可能有情况(因为target被抵消过)//add表示正数的总和,sub表示负数的总和//add-(sum-add)=target//add=(target+sum)/2if((target+sum)%2==1) return 0;int bagSize=(target+sum)/2;vector<int> dp(bagSize+1,0);dp[0]=1;for(int i=0;i<nums.size();i++){for(int j=bagSize;j>=nums[i];j--)dp[j]+=dp[j-nums[i]];}return dp[bagSize];}
};

474.一和零(坐牢)

分析:这一题还是背包,不同是有物品有两个维度: 0 和 1
思路:
  • 1.dp存储:当 0 容量为 i ,1 容量为 j 时,最多能装dp [ i ][ j ] 个字符串
  • 2.dp [ j ]:dp [ i ] [ j ] =max( dp [ i ] [ j ] , dp [ i - zeroNum ][ j - oneNum ] + 1 ] 
  • 3.初始化:全部初始化为0
  • 4.遍历顺序:外层遍历字符串数组,内层进行两个循环遍历
class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>>dp(m+1,vector<int>(n+1,0));for(string str:strs){int oneNum=0,zeroNum=0;for(char c:str){if(c=='0') zeroNum++;else oneNum++;}for(int i=m;i>=zeroNum;i--){for(int j=n;j>=oneNum;j--){dp[i][j]=max(dp[i][j],dp[i-zeroNum][j-oneNum]+1);}}}return dp[m][n];}
};

相关文章:

day-42 代码随想录算法训练营 动态规划 part 04

416.分割等和子集 分析&#xff1a;需要总和能分成两半&#xff0c;并且有子集能装满一半 思路&#xff1a; 1.dp存储&#xff1a;容量为j时装入的最大数值和dp[j]2.dp[j]max(dp[j],dp[j-nums[i]]nums[i]) 3.全部初始化为04.遍历顺序&#xff1a;外层遍历元素&#xff0c;内…...

Swift 周报 第三十六期

文章目录 前言新闻和社区消息称苹果公司和印度财政部官员磋商&#xff0c;扩大在印度的制造产能iPhone 15 Pro 机型新增泰坦灰iPhone 15 全系配 USB-C 苹果拒绝接口和安卓互通 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第三十…...

手写Mybatis:第19章-二级缓存

文章目录 一、目标&#xff1a;二级缓存二、设计&#xff1a;二级缓存三、实现&#xff1a;二级缓存3.1 工程结构3.2 二级缓存类图3.3 二级缓存队列3.3.1 FIFI缓存策略3.3.2 事务缓存3.3.3 事务管理3.3.4 修改一级缓存 3.4 缓存执行器3.4.1 执行器接口3.4.2 执行器抽象基类3.4.…...

Alibaba Canal 使用记录

项目中使用 canal 来同步数据到 Elasticsearch, 遇到很多问题&#xff0c;做一下记录&#xff1a; 版本问题&#xff1a; 1. 解析binlog出错 &#xff0c;表现为 limit excceed&#xff1a;xx 目前使用 mariadb 10.9.7/10.10.6 canal 1.1.6 hotfix &#xff0c;在这个版本组…...

GIT实战篇,教你如何使用GIT可视化工具

系列文章目录 手把手教你安装Git&#xff0c;萌新迈向专业的必备一步 GIT命令只会抄却不理解&#xff1f;看完原理才能事半功倍&#xff01; 快速上手GIT命令&#xff0c;现学也能登堂入室 GIT实战篇&#xff0c;教你如何使用GIT可视化工具 系列文章目录一、GIT有哪些常用工具…...

lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)

目录 1 查看文件相关命令 1.1 常用命令 1.2 硬链接和软链接 2 文件搜索相关命令 2.1 查找文件命令 2.2 查找文件内容命令 2.3 其他相关命令 3 文件处理相关命令 3.1 cut 3.2 sed 过滤 3.3 awk 匹配 4 解压缩相关命令 4.1 解压缩文件的意义 4.2 解压缩相关命令 1 …...

SpringBoot2.0集成WebSocket,多客户端

适用于单客户端&#xff0c;一个账号登陆一个客户端&#xff0c;登陆多个客户端会报错 The remote endpoint was in state [TEXT_FULL_WRITING] 这是因为此时的session是不同的&#xff0c;只能锁住一个session&#xff0c;解决此问题的方法把全局静态对象锁住&#xff0c;因…...

华为OD机试 - 等和子数组最小和 - 深度优先搜索(Java 2022 Q4 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》…...

浏览器会因为什么样的脚本而崩溃

浏览器可能因为以下几种情况而崩溃&#xff1a; 无限循环&#xff1a;如果JavaScript脚本包含一个无限循环&#xff0c;浏览器将无法停止脚本的执行&#xff0c;导致浏览器不响应甚至崩溃。例如&#xff0c;以下代码会导致无限循环&#xff1a; while (true) {// 无限循环 } 内…...

生成与调用C++动态链接库(so文件)

文章目录 前言生成C动态链接库步骤1&#xff1a;编写C源码步骤2&#xff1a;生成共享库步骤3&#xff1a;验证生成的SO文件 调用C动态链接库步骤1&#xff1a;修改原来makefile步骤2&#xff1a;编译调用程序步骤3&#xff1a;运行调用程序 总结 前言 动态链接库是代码重用和模…...

韶音的耳机怎么样,韶音骨传导耳机值得入手吗

韶音关于骨传导耳机的产品在质量方面还是有着不错的表现&#xff0c;其最具代表性的骨传导耳机就是韶音OpenRun Pro&#xff0c;在国产骨传导耳机中是具备了一定的知名度&#xff0c;有着自主研发的声学技术。 最突出的点就在于颜色上多样化&#xff0c;有着经典的黑色&#xf…...

STM32G030F6 (SOP-20)Cortex ® -M0+, 32KB Flash, 8KB RAM, 17 GPIOs

淘宝淘了一批 STM32G030F6P6 SOP20&#xff0e;先备注一下, 还没想到能干嘛用&#xff0e; 手上的 STM32F103C6T6还剩一些&#xff0e; 一堆 “淘宝原厂STM32F103C8T6”, 还烫着手. 理解信息: ( 逐步补充 ) System Clock GPIOs GPIOs 17 PA[7:0] : 8bits USART Timer ADC I2…...

常用的字符集和字符编码

基础概念 字符 字符是各种文字和符号的总称&#xff0c;包括各国家文字、标点符号、图形符号、数字等 字符集 一个操作系统支持的字符的集合。 字符编码和解码 将每个字符都设置一个唯一编号&#xff0c;编码就是将字符集中的字符编号以一定形式转化为字节存储下来&#xff0c…...

容器技术简介

引言 随着云计算、大数据、人工智能等技术的不断发展&#xff0c;容器技术作为一种新兴的虚拟化技术&#xff0c;正逐渐成为IT领域的热点。容器技术可以帮助开发者更好地管理、部署和扩展应用程序&#xff0c;提高开发效率和应用程序的可靠性。本文将深入探讨容器技术的概念、…...

数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据...

全文链接:http://tecdat.cn/?p22813 本教程为读者提供了使用频率学派的广义线性模型&#xff08;GLM&#xff09;的基本介绍。具体来说&#xff0c;本教程重点介绍逻辑回归在二元结果和计数/比例结果情况下的使用&#xff0c;以及模型评估的方法&#xff08;点击文末“阅读原文…...

macos 不支持svn安装

macos 10.13可能不支持svn命令,所以要安装 xcode-select --install 弹窗在线安装失败的话只能手动下载安装 打开:Sign In - Apple 搜索Command Line Tools (macOS 10.13) 下载9.4.1版本直接安装后即可...

如何通过实际操作来加深对Linux命令和概念的理解?

作为一个新手&#xff0c;你一定不要被Linux那堆命令吓到。其实&#xff0c;它们就像你的“超能力”&#xff0c;只要你掌握它们&#xff0c;你就能成为Linux世界的超级英雄&#xff01; 首先&#xff0c;我们要了解的是&#xff0c;Linux命令其实就像你的“魔法咒语”&#x…...

【开发语言】C语言与Python的互操作详解

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…...

华为配置聚合vlan(Super vlan--Sub vlan)

聚合vlan&#xff0c;Aggregation vlan&#xff0c;也称Super vlan&#xff0c;可以实现用Sub vlan二层隔离广播域&#xff0c;但又将这些Sub vlan聚合使用同一IP子网和网关的情况。 这样&#xff0c;多个Sub-VLAN共享一个网关地址&#xff0c;节约了子网号、子网定向广播地址、…...

CentOS7安装时直接跳过了安装信息摘要页面的解决方法

最近在配置Hadoop虚拟机的时候&#xff0c;创建的centos7虚拟机在安装信息摘要时直接自动跳过&#xff0c;直接跳到设置用户名和密码&#xff0c;在重复多次的重新删除安装后发现了问题所在&#xff1a; 在进行到选择操作系统来源时&#xff0c;注意是否出现“该操作系统将使用…...

不止.htaccess:盘点文件上传漏洞中那些‘借壳’执行的奇技淫巧

文件上传漏洞中的"借壳"执行艺术&#xff1a;超越.htaccess的攻防博弈 在Web安全领域&#xff0c;文件上传功能就像一扇半开的门——它为用户提供便利的同时&#xff0c;也为攻击者创造了可乘之机。当开发者试图通过简单的黑名单过滤来阻挡恶意文件时&#xff0c;攻击…...

一文搞懂工业机器人通讯协议:TCP/IP、Modbus与专用协议对比

在我十年的工控开发生涯中,通讯问题永远是项目延期的第一大原因。我见过太多团队花了几个月时间做运动控制和视觉算法,最后却卡在了机器人通讯上:要么是数据传输不稳定,要么是速度跟不上产线节拍,要么是换个品牌机器人就要全部重写代码。 很多新手工程师觉得通讯就是&quo…...

STM32F4/F7上跑AI手写识别:从CUBEMX配置到串口通信的完整避坑指南

STM32F4/F7实战AI手写识别&#xff1a;从模型部署到数据处理的工程化解决方案 在嵌入式设备上部署神经网络进行手写识别&#xff0c;正逐渐从实验室走向工业现场。STM32F4/F7系列凭借其平衡的性能与功耗&#xff0c;成为边缘AI应用的理想选择。本文将深入探讨从模型准备到实际部…...

研究助理/项目经理/内容编辑:Hermes Agent 3 类人格模板的 SOUL.md 配置要点

1. 三类人格不是“角色扮演”,而是上下文锚点的工程化切片 大多数人第一次看到 Hermes Agent 的 SOUL.md 配置时,会下意识把它当成一个“AI人设说明书”:研究助理要严谨、项目经理要干练、内容编辑要文雅。这种理解在小规模单次交互中勉强能用,但一旦进入真实研发流程——…...

别再死记硬背了!用这 5 个核心功能理解 Final Cut Pro 的设计哲学

Final Cut Pro 的设计哲学&#xff1a;5个核心功能如何重塑你的剪辑思维 当你第一次打开Final Cut Pro&#xff08;简称FCPX&#xff09;&#xff0c;可能会被它与其他剪辑软件截然不同的界面所困惑。这不是一个需要你适应传统时间线的工具&#xff0c;而是一个重新思考剪辑流程…...

AIGC 检测‘信息密度‘到底是什么?嘎嘎降 AI 帮你 AI 率从 65% 降到 8%

AIGC 检测"信息密度"到底是什么&#xff1f;嘎嘎降 AI 帮你 AI 率从 65% 降到 8% AIGC 检测算法 4.0 版本看的 5 项底层指标里——信息密度权重排第二&#xff08;约 25%&#xff09;。理解了这一项你才知道为什么"工整学术风"也会被判 AI。这篇文章把&quo…...

打破iOS修改壁垒:H5GG技术架构与实战路径全解析

打破iOS修改壁垒&#xff1a;H5GG技术架构与实战路径全解析 【免费下载链接】H5GG an iOS Mod Engine with JavaScript APIs & Html5 UI 项目地址: https://gitcode.com/gh_mirrors/h5/H5GG 在iOS生态中&#xff0c;游戏与应用修改一直被视为技术门槛较高的领域&…...

对比按量计费Taotoken的官方价折扣与活动价带来哪些实际节省

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比按量计费&#xff1a;Taotoken的官方价折扣与活动价带来哪些实际节省 1. 理解Taotoken的计费模式 Taotoken作为大模型API的聚…...

KMS_VL_ALL_AIO:一站式智能激活工具,彻底解决Windows与Office激活难题

KMS_VL_ALL_AIO&#xff1a;一站式智能激活工具&#xff0c;彻底解决Windows与Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款开源的智能激活脚本&#xff…...

【亲测免费】 探索高效编程新境界:RT809F编程器软件深度体验

探索高效编程新境界&#xff1a;RT809F编程器软件深度体验 【下载地址】RT809F编程器软件 本仓库提供了RT809F编程器的配套软件下载。RT809F是一款高度集成、功能强大的编程和调试工具&#xff0c;专为各种微控制器、闪存、EEPROM以及各种类型的IC设计。通过这款软件&#xff0…...