【代码随想录_Day30】1049. 最后一块石头的重量 II 494. 目标和 474.一和零
Day30 OK,今日份的打卡!第三十天
- 以下是今日份的总结
 - 最后一块石头的重量 II
 - 目标和
 - 一和零
 
以下是今日份的总结
1049 最后一块石头的重量 II
 494 目标和
 474 一和零
今天的题目难度不低,掌握技巧了就会很简单,尽量还是写一些简洁代码 ^ _ ^
最后一块石头的重量 II
思路:
1.确定dp数组以及下标的含义
------ dp[j]表示容量(这里说容量更形象,其实就是重量)为j的背包,最多可以背最大重量为dp[j]。
2.确定递推公式
------01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
------本题 :dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);
3.dp数组如何初始化
------因为重量都不会是负数,所以dp[j]都初始化为0就可以了
4.确定遍历顺序
------如果使用一维dp数组,物品遍历的for循环放在外层,遍历背包的for循环放在内层,且内层for循环倒序遍历!
5.举例推导dp数组
值得注意的是
最后dp[target]里是容量为target的背包所能背的最大重量。
在计算target的时候,target = sum / 2 因为是向下取整,所以sum - dp[target] 一定是大于等于dp[target]的。
那么相撞之后剩下的最小石头重量就是 (sum - dp[target]) - dp[target]。
//二维dp数组实现int lastStoneWeightII(vector<int>& stones) {vector<int>dp(15001,0);int sum = 0;//这堆石头的总重量for(int i = 0;i<stones.size();i++) sum += stones[i];int target = sum / 2;//遍历物品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 sum - dp[target] - dp[target];} 
目标和
思路:
 既然为target,那么就一定有
 left - right = target
 left + right = sum
 left = (target + sum)/2 。
 此时问题就转化为,装满容量为left的背包,有几种方法。
1.确定dp数组以及下标的含义
------ 填满j(包括j)这么大容积的包,有dp[j]种方法
_
2.确定递推公式
------dp[j] += dp[j - nums[i]],没弄明白什么意思,记住就可以了
_
3.dp数组如何初始化
------在初始化的时候dp[0] 一定要初始化为1
_
4.确定遍历顺序
------nums放在外循环,target在内循环,且内循环倒序
_
5.举例推导dp数组
值得注意的是
dp[j] += dp[j - nums[i]];
   int findTargetSumWays(vector<int>& nums, int target) {int sum = 0;for(int i = 0; i < nums.size();i++){sum += nums[i];}//没有方案if((target+sum)%2==1||abs(target)>sum)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] + dp[j-nums[i]];//求组合类问题的公式,都是类似这种}}return dp[bagSize];}
 
一和零
思路:
 本题中strs 数组里的元素就是物品,每个物品都是一个!
 而m 和 n相当于是一个背包,两个维度的背包
1.确定dp数组以及下标的含义
------ dp[i][j]:最多有i个0和j个1的strs的最大子集的大小为dp[i][j]。
2.确定递推公式
------01背包的递推公式为:dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);
------本题,strs里的字符串有x个0,y个1。
------所以递推公式:dp[i][j] = max(dp[i][j], dp[i - x][j - y] + 1);
------字符串的x和y相当于物品的重量(weight[i]),字符串本身的个数相当于物品的价值(value[i])
3.dp数组如何初始化
------01背包的dp数组初始化为0就可以。
------因为物品价值不会是负数,初始为0,保证递推的时候dp[i][j]不会被初始值覆盖。
4.确定遍历顺序
------一定是外层for循环遍历物品,内层for循环遍历背包容量且从后向前遍历!
5.举例推导dp数组
值得注意的是
这就是一个典型的01背包! 只不过物品的重量有了两个维度而已。
    int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0)); // 初始化全为0for (string str : strs) {int x = 0, y = 0;for (char a : str) {if (a == '0')//统计当前string的‘0’的个数x++;if (a == '1')//统计当前string的‘1’的个数y++;}for (int i = m; i >= x; i--) {for (int j = n; j >= y; j--) {dp[i][j] = max(dp[i][j], dp[i - x][j - y] + 1);}}}return dp[m][n];}
 
写在最后
----OK,今日份的博客就写到这里,这一期的动态规划好难想,明天继续加油!!!
—还没看下期的题,但是我的栈还有一节没写;
–追不上时间进度了!!又欠了三天的(笑
-🈚️。
相关文章:
【代码随想录_Day30】1049. 最后一块石头的重量 II 494. 目标和 474.一和零
Day30 OK,今日份的打卡!第三十天 以下是今日份的总结最后一块石头的重量 II目标和一和零 以下是今日份的总结 1049 最后一块石头的重量 II 494 目标和 474 一和零 今天的题目难度不低,掌握技巧了就会很简单,尽量还是写一些简洁代…...
【时时三省】tessy 集成测试:小白入门指导手册
目录 1,创建集成测试模块且分析源文件 2,设置测试环境 3,TIE界面设置相关函数 4,SCE界面增加用例 5,编辑数据 6,用例所对应的测试函数序列 7,添加 work task 函数 8,为测试场景添加函数 9,为函数赋值 10,编辑时间序列的数值 11,执行用例 12,其他注意事项…...
通过vagrant与VirtualBox 创建虚拟机
1.下载vagrant与VirtualBox【windows版本案例】 1.1 vagrant 下载地址 【按需下载】 https://developer.hashicorp.com/vagrant/install?product_intentvagranthttps://developer.hashicorp.com/vagrant/install?product_intentvagrant 1.2 VirtualBox 下载地址 【按需下载…...
第13章 更多的结构化命令《Linux命令行与Shell脚本编程大全笔记》
13.1 For命令 格式:for var in list;dofor命令默认按照空格、制表符、换行符作为字段分隔符区分单个值,如果某个值含有空格要使用双引号从命令中读取值列表for state in $(cat $file)更改字段分隔符IFS(internal field separator)IFS$\n可能的需求&…...
【计算机网络】学习指南及导论
个人主页:【😊个人主页】 系列专栏:【❤️计算机网络】 文章目录 前言我们为什么要学计算机网络?计算机网络概述计算机网络的分类按交换技术分类按使用者分类按传输介质分类按覆盖网络分类按覆盖网络分类 局域网的连接方式有线连接…...
安装mitmproxy失败
安装mitmproxy失败记录 问题记录 问题记录 安装mitmproxy时,发现一直报错 这里的报错是因为我缺少了编译的环境 我是win7 的系统,缺少C的环境,所以我安装的时候源码包无法编译。 单独安装了这个包,依旧是失败的。 1.尝试用以下命…...
安装adb和常用命令
下载ADB安装包 https://dl.google.com/android/repository/platform-tools-latest-windows.zip 解压安装包 解压如上下载的安装包,然后复制adb.exe所在的文件地址 配置环境变量 我的电脑——>右键属性——>高级系统设置——>环境变量——>系统变量—…...
C++ 几何计算库
代码 #include <iostream> #include <list> #include <CGAL/Simple_cartesian.h> #include <CGAL/AABB_tree.h> #include <CGAL/AABB_traits.h> #include <CGAL/AABB_segment_primitive.h> #include <CGAL/Polygon_2.h>typedef CGAL…...
云动态摘要 2024-07-16
给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起! [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造&…...
数仓工具—Hive基础之临时表及示例
Hive基础之临时表及示例 临时表是应用程序自动管理在大型或复杂查询执行期间生成的中间数据的一种便捷方式。Hive 0.14 及更高版本支持临时表。可以在用户会话中像使用普通表一样多次使用它们。在本文中,我们将介绍 Apache Hive 临时表,以及如何创建和使用限制的示例。 Hiv…...
机体坐标系和导航坐标系
目录 机体坐标系(Body Frame)例子:无人机的机体坐标系 导航坐标系(Navigation Frame)例子:地球固定的导航坐标系 具体例子说明机体坐标系描述导航坐标系描述 总结 机体坐标系(Body Frame&#x…...
软件测试——web单功能测试
工作职责: 1.负责产品系统测试,包括功能测试、性能测试、稳定性测试、用户场景测试、可靠性测试等。 2.负责测试相关文档的编写,包括测试计划、测试用例、测试报告等。 3.负责自动化测试框架、用例的维护。 岗位要求: 1.熟练…...
django-ckeditor富文本编辑器
一.安装django-ckeditor 1.安装 pip install django-ckeditor2.注册应用 INSTALLED_APPS [...ckeditor, ]3.配置model from ckeditor.fields import RichTextFieldcontent RichTextField()4.在项目中manage.py文件下重新执行迁移,生成迁移文件 py…...
鸿蒙模拟器(HarmonyOS Emulator)Beta申请审核流程
文 | Promise Sun 一.背景: 鸿蒙项目开发需要使用模拟器进行开发测试,但目前想在DevEco Studio开发工具中使用模拟器就必须到华为官网进行报名申请,参加“鸿蒙模拟器(HarmonyOS Emulator)Beta活动申请”。 申请审核通…...
VUE:跨域配置代理服务器
//在vite.config。js中,同插件配置同级进行配置server:{proxy:{"/myrequest":{//代理域名,可自行修改target:"https://m.wzj.com/",//访问服务器的目标域名changeOrigin:true,//允许跨域configure:(proxy,options) > {proxy.on(&…...
Redis实战—附近商铺、用户签到、UV统计
本博客为个人学习笔记,学习网站与详细见:黑马程序员Redis入门到实战 P88 - P95 目录 附近商铺 数据导入 功能实现 用户签到 签到功能 连续签到统计 UV统计 附近商铺 利用Redis中的GEO数据结构实现附近商铺功能,常见命令如下图所示。…...
小程序里面使用vant ui中的vant-field组件,如何使得输入框自动获取焦点
//.wxml <van-fieldmodel:value"{{ userName }}"placeholder"请输入学号"focus"{{focusUserName}}"/>// .js this.setData({focusUserName: true});vant-field...
Html_Css问答集(12)
99、将上例的0%改为30%,会如何变化? none:延迟2秒间无色,3.8秒(0%-30%占1.8秒)前无色,之后变红到5秒绿最后蓝,动画结束时恢复初始(无色)。 forward:延迟2秒间无色&am…...
【C语言】条件运算符详解 - 《 A ? B : C 》
目录 C语言条件运算符详解1. 条件运算符的语法和使用示例 1:基本用法输出 2. 嵌套条件运算符示例 2:嵌套条件运算符输出 3. 条件运算符与 if-else 语句的比较示例 3:使用 if-else 语句示例 4:使用条件运算符 4. 条件运算符的实际应…...
乘积量化pq:将高维向量压缩 97%
向量相似性搜索在处理大规模数据集时,往往面临着内存消耗的挑战。例如,即使是一个包含100万个密集向量的小数据集,其索引也可能需要数GB的内存。随着数据集规模的增长,尤其是高维数据,内存使用量会迅速增加,…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
