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

代码随想录打卡Day36

今天做的头皮发麻,除了第一道题是自己AC的,剩下两道题目都是看视频才AC的,主要是看了视频也花了很久时间才想清楚。

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

这道题一开始没什么思路,但是看到提示说和昨天的分割子集很像,然后我就把思路想出来了。这道题目也是先将数组内元素求和然后除以二,背包的最大容量就设置为sum / 2。和昨天那道题一样的思路,在动态规划的时候让背包尽可能装满就行了。在遍历结束以后,求剩下元素与背包最大价值之间的差值即可。

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {//1.确定dp[i][j]的含义:在背包容量为j,下标为[0, i]的数字组合中的最优方案的最大价值//2.确定递推公式  dp[i][j] = max(dp[j], dp[j - weight[i]] + value[i])//3.dp数组初始化 dp初始化为0向量//4.确定遍历顺序:先物品,再背包(可互换)//5.打印数组(省略)int sum = accumulate(stones.begin(), stones.end(), 0);vector<vector<int>> dp(stones.size(), vector<int>(sum / 2 + 1));//初始化for(int i = 0; i < stones.size(); i++)dp[i][0] = 0;for(int i = 1; i <= sum / 2; i++){if(i >= stones[0]) dp[0][i] = stones[0];else dp[0][i] = 0;}//开始动态规划for(int i = 1; i < stones.size(); i++){for(int j = 1; j <= sum / 2; j++){if(j < stones[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]);}}return sum - 2 * dp[stones.size() - 1][sum / 2];}
};

494. 目标和

笑死,思路根本就想不到,看了视频才AC的,但是按照视频的思路还是遇到一个测试样例(nums = [0,0,0,0,0,0,0,0,1],target=1)通过不了,想了一下,把遍历条件中的>改成了>=,然后就全部AC了,我觉得这个改动主要还是为了应对这个极端的测试案例,其余情况下用>是可以直接AC的。我发现但凡dp数组元素代表的不是最大价值,如符合条件的组合个数,符合条件的集合长度等,则遍历背包的时候必须要倒序遍历来避免重复问题,这道题目主要就难在dp数组的含义很难构造,且初始化条件很不好想,一旦明确了dp数组的含义和初始条件,递推公式起始很好想。

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {//1.确定dp[j]的含义:在背包容量为j的情况下,有dp[j]种方法达到指定价值//2.确定递推公式  dp[j] = dp[j] + dp[my_target - j]//3.dp数组初始化 dp[0] = 1//4.确定遍历顺序:先物品,再背包(背包倒序遍历)//5.打印数组(省略)int sum = accumulate(nums.begin(), nums.end(), 0);if(((sum + target) % 2 == 1) || (abs(target) > sum)) return 0;  //target取值不合理,达不到//可以达到targetint m = nums.size();int n = (sum + target) / 2;vector<int> dp(n + 1, 0);//初始化dp[0] = 1;//开始动态规划for(int i = 0; i < m; i++){for(int j = n; j >= 0; j--){if(j < nums[i]) continue;dp[j] += dp[j - nums[i]];}  }return dp.back();}
};

474.一和零

被这道题爆杀了,刚看到这道题用二维dp数组也不知道该怎么写,这道题的背包容量实际上有两个维度,一个是0的容量,一个是1的容量,题目要求的是符合条件的最大子集长度,并不是直接求最大价值,所以这道题也需要倒序遍历背包,dp数组的含义是:背包最多能装i个0和j个1的情况下,符合条件的子集的最大长度。这道题的初始化很简单,dp[0][0] = 0。递推公式有点难想,如果背包能装下,则装下当前字符串后的子集长度为dp[i - x][j - y] + 1,当然,在遍历的时候需要维护最大长度,所以应该用max函数将其与自身比较。在遍历结束后,直接返回dp[m][n]即可。

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {//1.确定dp[i][j]的含义:在背包容量最多装i个0和j个1的情况下的最长子集的长度//2.确定递推公式  dp[i][j] = max(dp[i - x][j - y] + 1, dp[i][j])//其中x为当前遍历元素的0的个数,y为当前遍历元素的1的个数//3.dp数组初始化 dp[0] = 1//4.确定遍历顺序:先物品,再背包(背包倒序遍历)//5.打印数组(省略)vector<vector<int>> dp(m + 1, vector<int> (n + 1, 0));//初始化dp[0][0] = 0;//开始动态规划for(string s : strs){  //外层循环遍历字符串(物品)//统计当前字符串的0,1个数int x = 0, y = 0;for(char c : s){if(c == '0') x += 1;else y += 1;}//遍历背包(特殊情况,用两层for循环才能实现)for(int i = m; i >= 0; i--){if(i < x) break;for(int j = n; j >= 0; j--){if(j < y) break;dp[i][j] = max(dp[i - x][j - y] + 1, dp[i][j]);}}}return dp[m][n];}
};

做的破大防啊!!!!!!

相关文章:

代码随想录打卡Day36

今天做的头皮发麻&#xff0c;除了第一道题是自己AC的&#xff0c;剩下两道题目都是看视频才AC的&#xff0c;主要是看了视频也花了很久时间才想清楚。 1049. 最后一块石头的重量 II 这道题一开始没什么思路&#xff0c;但是看到提示说和昨天的分割子集很像&#xff0c;然后我…...

速盾:凡科建站开cdn了吗?

凡科建站是一家专业的建站平台&#xff0c;提供了多种功能和工具来帮助用户快速搭建自己的网站。随着互联网技术的不断发展&#xff0c;网站的访问速度和稳定性成为了越来越重要的考虑因素。为了优化用户体验&#xff0c;提高网站的加载速度&#xff0c;凡科建站已经开启了CDN&…...

python贪吃蛇游戏项目源码【免费】

使用Pygame库实现的贪吃蛇游戏。Pygame是一个用于创建视频游戏的Python模块集合&#xff0c;它提供了图形和声音库&#xff0c;使游戏开发变得容易。 初始化设置 屏幕大小 (SCREEN_WIDTH, SCREEN_HEIGHT): 定义了游戏窗口的宽度和高度。方格大小 (SIZE): 定义了游戏中每个小方…...

Mycat搭建分库分表

分库分表解决的问题 单表数据量过大带来的性能和存储容量的限制的问题&#xff1a; 索引效率下降读写瓶颈存储容量限制事务性能问题分库分表架构 再搭建一对主从复制节点&#xff0c;3307主节点&#xff0c;3309从节点配置数据源 dw1 , dr1,创建集群c1创建逻辑库 CREATE DATAB…...

Python中的数据结构

1.列表 可以将列表理解为一个购物清单&#xff0c;这个清单里面的的每个元素可以是任何类型&#xff0c;并且可以重复&#xff08;这里区别了列表与数组&#xff09;。列表用“[]”表示。 #这里定义了一个列表&#xff0c;列表中的元素的类型不同。 lsit_a [a, b, c, 1, 2] …...

mysql笔记8(多表查询)

文章目录 1. union联合查询可能会用到去重操作 2. inner join 内连接3. left join 左连接4. right join 右连接5. cross join 交叉连接6. natural join 自然连接natural left join 自然左连接natural right join 自然右连接自然连接的两张表没有同名字段怎么办&#xff1f; 7. …...

typescript-tsconfig文件解释

ts.config.json 作用 用于标识 TypeScript 项目的根路径用于配置 TypeScript 编译器用于指定编译的文件 重要字段 files - 设置要编译的文件的名称&#xff1b;include - 设置需要进行编译的文件&#xff0c;支持路径模式匹配&#xff1b;exclude - 设置无需进行编译的文件…...

所有用贪心的算法和所有用动态规划(dp)的算法合集

贪心 纯贪心算法&#xff08;常在普及组中做暴力题正解使用&#xff09;DijkstraBFS&#xff08;最短路径&#xff09;KruskalPrimSollin&#xff08;Boruvka)二分三分最值排序LCA&#xff08;纯贪心版&#xff09; 动态规划&#xff08;dp&#xff09; Floyd线性DP区间DP背…...

论文阅读 | 基于流模型和可逆噪声层的鲁棒水印框架(AAAI 2023)

Flow-based Robust Watermarking with Invertible Noise Layer for Black-box DistortionsAAAI, 2023&#xff0c;新加坡国立大学&中国科学技术大学本论文提出一种基于流的鲁棒数字水印框架&#xff0c;该框架采用了可逆噪声层来抵御黑盒失真。 一、问题 基于深度神经网络…...

上线跨境电商商城的步骤

上线一个跨境电商商城涉及多个步骤&#xff0c;从前期准备到上线后的维护。以下是一些关键步骤&#xff1a; 1. 市场调研与规划 目标市场分析&#xff1a;研究目标市场的需求、竞争对手和消费者行为。法律法规&#xff1a;了解并遵守目标市场的法律法规&#xff0c;包括税收、…...

Python基础(七)——PyEcharts数据分析(面向对象版)

四、使用PyEcharts数据分析案例&#xff08;面向对象版&#xff09; 【前言&#xff1a;为了巩固之前的Python基础知识&#xff08;一&#xff09;到&#xff08;五&#xff09;&#xff0c;并为后续使用Python作为数据处理的好帮手&#xff0c;我们一起来用面向对象的思想来理…...

滚雪球学SpringCloud[5.1讲]: Spring Cloud Config详解

全文目录&#xff1a; 前言1. Spring Cloud Config的基本概念1.1 微服务配置管理的挑战1.2 Spring Cloud Config的架构 2. 配置服务端与客户端的配置2.1 配置服务端的搭建2.2 配置客户端的搭建2.3 环境隔离配置 3. 配置中心与Git的集成3.1 Git仓库的目录结构设计3.2 配置的版本…...

Unity常用随机数算法

Unity的Random.Range介绍 有两个重载: 如果参数存在至少一个浮点数那么将会触发public static float Range(float minInclusive, float maxInclusive); 返回一个范围内的浮点数(包含首尾) 如果参数都是整形则触发public static int Range(int minInclusive, int maxExclusiv…...

dial unix /var/run/docker.sock: connect: permission denied

要解决 permission denied 错误并授予当前用户 sunyuhua 访问 Docker 的权限&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 检查 Docker 服务是否在运行 首先&#xff0c;确保 Docker 服务已经启动&#xff1a; sudo systemctl start docker sudo systemctl enable do…...

Prompt提示词技巧

文章目录 &#x1f34a; 探索AI内容创作核心&#xff1a;提示词Prompt1 什么是提示词工程?1.1 提示词的原理1.2 提示词工程师的前景1.3 提示词工程师的门槛是否较低&#xff1f;1.4 提示词的未来展望 2 提示词编写的基本技巧3 常见的提示词框架3.1 CO-STAR框架3.2 BORKE框架3.…...

滑动窗口(6)_找到字符串中所有字母异位词

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 滑动窗口(6)_找到字符串中所有字母异位词 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f4…...

【无标题】rocket

rocketMQ集群双主双从同步模式(2m-2s-sync)搭建-CSDN博客 集群架构概念 在部署的时候首先要将nameserver启动起来&#xff0c;之后就是将broker启动起来&#xff0c;broker启动起来会将自己的信息注册到nameserver上面。之后再去创建topic&#xff0c;因为发消息的逻辑和收消…...

Maven国内镜像(四种)

配置Maven使用国内镜像是一个常见的做法&#xff0c;因为这样可以显著提高依赖下载的速度并避免网络不稳定带来的问题 在 settings.xml 文件中&#xff0c;需要添加或修改 <mirrors> 标签来指定国内镜像。 以下是几个可用的镜像 1. 阿里云 <mirrors> <mi…...

Linux环境中如何快速修改 JAR 包中的配置文件

在日常的 Java 开发中&#xff0c;我们时常会遇到需要修改 JAR 包中某个配置文件的情况。比如&#xff0c;某些场景下你可能需要调整 application-dev.yml 文件中的配置信息。但解压整个 JAR 包再重新打包会显得比较繁琐。本文将介绍一种快捷的方法&#xff0c;帮助你快速查找并…...

java高频面试题(2024最新)

HashMap使用哪些方法来解决哈希冲突&#xff1f; 使用链地址法&#xff08;使用散列表&#xff09;来链接拥有相同hash值的数据&#xff1b;使用2次扰动函数&#xff08;hash函数&#xff09;来降低哈希冲突的概率&#xff0c;使得数据分布更平均&#xff1b;引入红黑树进一步…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...

32单片机——基本定时器

STM32F103有众多的定时器&#xff0c;其中包括2个基本定时器&#xff08;TIM6和TIM7&#xff09;、4个通用定时器&#xff08;TIM2~TIM5&#xff09;、2个高级控制定时器&#xff08;TIM1和TIM8&#xff09;&#xff0c;这些定时器彼此完全独立&#xff0c;不共享任何资源 1、定…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中&#xff0c;如何展示好看的实验结果图像非常重要&#xff01;&#xff01;&#xff01; 1、灰度原始图像 灰度图像每个像素点只有一个数值&#xff0c;代表该点的​​亮度&#xff08;或…...