算法刷题Day 43 最后一块石头的重量II+目标和+一和零

Day 43 动态规划

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

注意第二个for循环那里不要漏了等于号

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int sum = accumulate(stones.begin(), stones.end(), 0);int target = sum / 2;vector<int> dp(target + 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 (sum - dp[target]) - dp[target]; }
};

494. 目标和

关键是要想到:

假设加法的总和为x,那么减法对应的总和就是sum - x。

所以我们要求的是 x - (sum - x) = target

x = (target + sum) / 2

此时问题就转化为,装满容量为x的背包,有几种方法

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int sum = accumulate(nums.begin(), nums.end(), 0);if (abs(target) > sum) return 0;if ((sum - target) & 1){return 0;}int bagSize = (sum + target) / 2;vector<int> dp(bagSize + 1, 0);dp[0] = 1; // 为什么等于1for (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背包问题

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));for (auto str : strs){int zeroNum = 0, oneNum = 0;for (auto ch : str){if (ch == '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];}
};

总结

0-1背包的多种应用:

  • 纯 0 - 1 背包 (opens new window)是求 给定背包容量 装满背包 的最大价值是多少。
  • 416. 分割等和子集 (opens new window)是求 给定背包容量,能不能装满这个背包。
  • 1049. 最后一块石头的重量 II (opens new window)是求 给定背包容量,尽可能装,最多能装多少
  • 494. 目标和 (opens new window)是求 给定背包容量,装满背包有多少种方法。
  • 474. 一和零是求 给定背包容量,装满背包最多有多少个物品。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF ListBoxItem DataTempldate command绑定无效解决

出错代码&#xff1a; <TextBlockGrid.Row"1"Margin"16,0,16,8"VerticalAlignment"Center"Foreground"{DynamicResource MaterialDesignBodyLight}"Text"{Binding Password}"TextWrapping"Wrap"><materi…

pyqt中有connect用法的控件

在PyQt中&#xff0c;以下控件可以使用connect方法进行信号与槽的连接&#xff1a; QPushButton&#xff1a;连接点击按钮的信号clickedQAction&#xff1a;连接菜单项或工具栏按钮的信号triggeredQComboBox&#xff1a;连接选择项发生改变的信号currentIndexChangedQLineEdit…

使用Audition进行音频算法验证与设计实验方法

+v hezkz17进数字音频系统研究开发交流答疑 一 音频算法验证与设计三种方法 (1)Audition (2)matlab (3)嵌入式DSP开发平台 二 Audition 软件如何进行音频算法验证实验?  要在Audition软件中进行音频算法验证实验,可以按照以下步骤进行操作: 1 导入音频文件:打…

Redis常见须知

介绍一下redis数据库 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符…

15 - 信号处理设计模式

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. Linux应用程序安全性讨论1.1 问题1.2 不同场景1.2.1 场景一&#xff1a;不需要处理信号1.2.2 场景二&#xff1a;需要处理信号 2. 场景…

一文读懂Mysql 优化之order by【百万乃至千万数据查询优化推荐】

一文读懂Mysql 优化之order by 驱动表与被驱动表概念复合索引的三大原则排序方式对比索引排序驱动表排序临时表排序排序算法驱动表与被驱动表概念 当使用left join时,左表是驱动表,右表是被驱动表当使用right join时,右表是驱动表,左表是被驱动表当使用join(inner join) …

python_day11_pymysql

SQL基础语法回忆 show DATABASES;use world;-- SELECT DATABASES();show TABLES;CREATE TABLE Student(id int,name VARCHAR(10),age int,gender VARCHAR(5&#xff09; );删除表 # 删除表 DROP TABLE Student;插入操作 insert into student(id) VALUES(1),(2),(3);insert i…

STM32使用高级定时器输出互补pwm波

STM32使用高级定时器输出互补pwm波 前言硬件和软件cubemx新建工程打开Debug模式配置时钟源六大时钟的作用选择Crystal/Ceramic Resonator&#xff0c;即使用外部晶振作为HSE的时钟源。 配置时钟配置高级定时器TIM8和通用定时器TIM3这里大概解释一下配置pwm输出用到的几个参数我…

【解决】 Android Studio Failed to find configured root that contains

问题出现 尝试将拍摄的图像存储至手机自定义的存储空间&#xff0c;不料却一直报错&#xff0c;主要问题是在使用 FileProvider 从文件路径中获取 Uri 时出现异常。 相关代码 报错区域的文件路径相关的代码 主要是在 File imageDir new File(getExternalCacheDir(), “Galler…

【Nginx08】Nginx学习:HTTP核心模块(五)长连接与连接处理

Nginx学习&#xff1a;HTTP核心模块&#xff08;五&#xff09;长连接与连接处理 HTTP 基础知识大家掌握的怎么样呀&#xff1f;对于长连接这一块的内容应该也不是什么新鲜东西了吧。毕竟 HTTP1.1 都已经发布这么久了。今天主要来看的就是长连接相关的配置&#xff0c;另外还会…

ylb-接口4投资排行榜

总览&#xff1a; 1、使用Redis存储投资信息 2、Redis常量类 在common模块constants包&#xff0c;创建一个Redis常量类&#xff08;RedisKey&#xff09;&#xff1a; package com.bjpowernode.common.constants;public class RedisKey {/*投资排行榜*/public static fin…

Qt5.15.2安装

解释一下 Qt 的版本号 比如 5.15.2 是完整的 Qt 版本号&#xff0c;第一个数字 5 是大版本号&#xff08;major&#xff09;&#xff0c;第二个数字 15 是小版本号&#xff08;minor&#xff09;&#xff0c;第三个数字 2 是补丁号&#xff08;patch&#xff09;。 只要前面两个…

oracle 如何连同空表一起导出成dmp的方法

1、oracle导出dmp文件的时候&#xff0c;经常会出现一些空表&#xff0c;没有一并被导出的情况。 执行sql select alter table ||table_name|| allocate extent; from user_tables where num_rows0 or num_rows is null; 新建一个sql窗口&#xff0c;把查询结果的sql&#…

GSV6201替代方案|CS5466设计资料|CS5466原理图|typec转HDMI_8k方案芯片

GSV6201是一款高性能、低功耗、高性能的&#xff0c;USB Type-C备用模式显示端口1.4至HDMI 2.1转换器。通过集成增强型微控制器&#xff0c;GSV6201创造了一个经济高效的解决方案提供了上市时间优势。显示端口接收机支持高达32.4Gbps&#xff08;HBR3&#xff0c;4通道&#xf…

go map[string]any 转map[string]string

目录 一 、map[string]any参数转为map[string]string 二 、go 请求参数绑定 gin框架示例 三、 go 中实现接口 四 、go中设计模式策略模式实现 一 、map[string]any参数转为map[string]string 场景&#xff1a;在go中有将map[string]any参数转为map[string]string 其中…

uniapp和uview组件实现下拉触底刷新列表

下面是一个在UniApp中使用uView组件实现下拉触底刷新列表的示例&#xff0c;并使用Axios来请求分页数据列表&#xff1a; 首先&#xff0c;确保你已经在UniApp项目中添加了uView组件库。你可以在项目根目录执行以下命令安装它们&#xff1a; npm install uview-ui或者使用 Hb…

曲师大2023大一新生排位赛-D.Factor题解

D.Factor 题目描述 你有一个集合 &#xff0c;和具有 个正整数的数组 . 最初&#xff0c;集合 为空&#xff08;不包含任一元素&#xff09;。你将按照以下方式填充集合 : 以此枚举数组 a 中的每个元素。对于数组中的第 i 个元素 &#xff0c;生成 ​ 的因子集合 ​。如果…

使用对象解构赋值,将对象的某些属性赋值给另一个对象

在处理接口返回的数据时&#xff0c;我需要将接口返回的数据&#xff08;对象&#xff09;的某些属性用另一个对象进行接收&#xff0c;学习对象解构赋值之前&#xff0c;我一直使用的都是最笨的方法&#xff1a; this.formData.projectId res.data.projectId this.formData.…

idea中常用的快捷键

快捷键: 1.快速生成main方法 main/psvm public static void main(String[] args) {} 2.快速复制当前行的代码: ctrld 3.快速捕获异常: altctrlt 4.快速打印结果: sout/soutv System.out.println(s); System.out.println("s " s); 5.自动生成对象的返回值…

【运维工程师学习六】LAM部署搭建个人Discuz论坛

【运维工程师学习六】LAM部署搭建个人Discuz论坛 1、先卸载Mariadb再安装Mysql2、MySQL官网rpm包下载3、在rpm包路径下安装 YUM Repo 文件4、更新软件仓库本地数据库信息5、开始部署——php的安装6、搜索yum包7、开始部署——配置apache以支持php&#xff08;1&#xff09;配置…