代码随想录算法训练营第23期day42|1049. 最后一块石头的重量II、494. 目标和、474.一和零

目录

一、(leetcode 1049)最后一块石头的重量II

二、(leetcode 494)目标和

三、(leetcode 474)一和零


一、(leetcode 1049)最后一块石头的重量II

力扣题目链接

状态:查看思路后AC。

将石头重量分成两堆,这两堆的重量要尽可能相近。计算其中一堆的最大重量,因为sum/2向下取整,所以dp[target]肯定是重量较轻的那一堆,最后的答案就是重量较大的那一堆减去dp得到的这一堆,也就是(sum-dp[target]) - dp[target]。

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

二、(leetcode 494)目标和

力扣题目链接

状态:不会。

原题的回溯方法比较符合直觉,很难在没有做过的情况下和01背包或者说分割等和子集的方法联系起来。要多好好想想

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {int sum = 0, len = nums.size();for(int i = 0; i < len; ++i) { sum += nums[i]; }if(abs(target) > sum) return 0;if((target+sum) % 2 == 1) return 0;int bagsize = target + sum >> 1;vector<int> dp(bagsize+1, 0);dp[0] = 1;for(int i = 0; i < len; ++i){for(int j = bagsize; j >= nums[i]; --j){dp[j] += dp[j-nums[i]];}}return dp[bagsize];}
};

三、(leetcode 474)一和零

力扣题目链接

状态:不会。

不要因为有m和n的限制就觉得这是多重背包,这里的m和n只是不同维度上的限制,题目本质上还是01背包(但是怎么关联上还是有困难啊)。

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];}
};

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

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

相关文章

【漏洞复现】Drupal XSS漏洞复现

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 复现环境&#xff1a;Vulhub 环境启动后&#xff0c;访问 http://192.168.80.141:8080/ 将会看到drupal的安装页面&#xff0c;一路默认配置下一步安装。因为没有mysql环境&#xff0c;…

Mac下使用nvm,执行微信小程序自定义处理命令失败

环境 系统&#xff1a;Mac OS 终端&#xff1a;zsh CPU&#xff1a;M1/ARM架构 node环境&#xff1a;nvm&#xff0c;node20 node目录&#xff1a;/Users/laoxu/.nvm/versions/node/v20.1.0/bin/ 问题 在使用微信小程序的自定义处理命令时&#xff0c;启动失败 提示找不…

【音视频 | Ogg】libogg库详细介绍以及使用——附带libogg库解析.opus文件的C源码

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

全国大学生GIS应用技能大赛2023-12

一、题目背景 为了计算不同高程区间范围内流域的面积&#xff0c;要求根据提供的DEM数据&#xff0c;按照要求&#xff0c;计算不同高程区间范围内流域的面积。 二、数据说明 1、DEM&#xff1a;某地区的数字高程模型&#xff1b; 三、题目要求 根据提供的数字高程模型&am…

算法随想录算法训练营第四十九天| 503.下一个更大元素II 42. 接雨水

503.下一个更大元素II 题目&#xff1a;给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个数字之后的第一个…

layer.open再次渲染html,子页面调用在父页面打开弹出层,渲染html

使用的版本 layui-v2.5.6是在父页面弹出层&#xff0c;显示&#xff1b;调用的是父页面的layer.open(); 父页面&#xff1a; <link href"/layui/css/layui.css" rel"stylesheet" /> <script src"/layui/layui.all.js"></script…

算法题:16. 最接近的三数之和(Python Java 详解)

解题思路 Step1&#xff1a;先对数组排序&#xff0c;然后设置3个指针&#xff0c;指针1遍历范围为&#xff08;0~数组长度减2&#xff09;。 Step2&#xff1a;指针1位置确定时&#xff0c;指针1后面的数组元素首位各放置一个指针&#xff08;指针2、指针3&#xff09;。 S…

项目中用到的git指令合集

目录 前言一、删除分支本地远程 二、不小心删除未合并成功的分支总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 做了一个git的常用指令合集&#xff0c;包含具体场景介绍 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一…

Python笔记——linux/ubuntu下安装mamba,安装bob.learn库

Python笔记——linux/ubuntu下安装mamba&#xff0c;安装bob.learn库 一、安装/卸载anaconda二、安装mamba1. 命令行安装&#xff08;大坑&#xff0c;不推荐&#xff09;2. 命令行下载guihub上的安装包并安装&#xff08;推荐&#xff09;3. 网站下载安装包并安装&#xff08;…

ubuntu外接显示器、不识别笔记本显示器

如题&#xff1a;ubuntu外接显示器、不识别笔记本显示器 双屏幕&#xff0c;笔记本外接显示器HDMI&#xff0c;然后安装Nvidia显卡驱动&#xff0c;之后重启笔记本显示器无法识别&#xff0c;只能使用外接显示器了。 中文网站找遍了都没有解决方案&#xff0c;然后用英文搜索&a…

电路正负反馈,电压电流反馈,串并联反馈详细判别方法

正/负反馈&#xff1a;假设输出升高&#xff0c;转一圈回来仍使其升高就是正反馈&#xff0c;反之就是负反馈。作图法&#xff1a;在RL的信号端画一个向上的小箭头&#xff0c;沿着反馈环路&#xff0c;每经过一个元器件就画一个相应的箭头&#xff0c;一直画到放大器的输出端&…

用C++QT实现一个modbus rtu通讯程序框架

下面是一个简单的Modbus RTU通讯程序框架的示例&#xff0c;使用C和QT来实现&#xff1a; #include <QCoreApplication> #include <QSerialPort> #include <QModbusDataUnit> #include <QModbusRtuSerialMaster>int main(int argc, char *argv[]) {QC…

代理模式(静态代理、JDK代理、CGLIB代理)

简介 代理模式有三种不同的形式&#xff1a;静态代理、动态代理&#xff08;JDK代理、接口代理&#xff09;、CGLIB代理 目标&#xff1a;在不修改目标对象的前提下&#xff0c;对目标对象进行扩展。 静态代理 需要定义接口或父类对象&#xff0c;被代理对象和代理对象通过实…

asp.net docker-compose添加dapr配置

docker-compose.yml添加配置 webapplication1-dapr:image: "daprio/daprd:1.9.6"network_mode: "service:webapplication1"depends_on:- webapplication1 docker-compose.override.yml中添加 dapr-placement:command: ["./placement", "-po…

【数据结构】顺序表的学习

前言:在之前我们学习了C语言的各种各样的语法&#xff0c;因此我们今天开始学习数据结构这一个模块&#xff0c;因此我们就从第一个部分来开始学习"顺序表"。 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:数据结构 &#x1f…

windows和docker环境下springboot整合gdal3.x

链接: gdal官网地址 gdal gdal的一个用c语言编写的库&#xff0c;用于处理地理信息相关的数据包括转换&#xff0c;识别数据&#xff0c;格式化数据以及解析 同时提供第三方语言的SDK包括python&#xff0c;java上述需要编译后使用 java是需要使用jni接口调用实现方法在wind…

mysql---存储引擎

目录 mysql---存储引擎 功能&#xff1a; mysql的存储引擎分类 MYISAM和INNODB做个对比 MYISAM 在磁盘上有三个文件&#xff1a; MYISAM的特点&#xff1a; 支持的存储格式: INNODB innodb的特点 使用场景&#xff1a; 三个文件&#xff1a; 行锁 表锁 排他锁 …

uniapp原生插件之安卓文件操作原生插件

插件介绍 安卓文件操作原生插件&#xff0c;读写文件&#xff0c;文件下载等&#xff0c;支持读取移动设备路径等外部存储设备路径&#xff0c;如U盘路径 插件地址 安卓文件操作原生插件 - DCloud 插件市场 超级福利 uniapp 插件购买超级福利 详细使用文档 uniapp 安卓文…

GPT实战系列-ChatGLM3部署CUDA11+1080Ti+显卡24G实战方案

目录 一、ChatGLM3 模型 二、资源需求 三、部署安装 配置环境 安装过程 低成本配置部署方案 四、启动 ChatGLM3 五、功能测试 新鲜出炉&#xff0c;国产 GPT 版本迭代更新啦~清华团队刚刚发布ChatGLM3&#xff0c;恰逢云栖大会前百川也发布Baichuan2-192K&#xff0c;一…

php 接口请求一次,controller调用了两次。

这几天开发一个数据导出功能 由于是数据导出&#xff0c;所以有点慢。然后发现一个问题&#xff0c;前端只请求一次&#xff0c;controller却收到了两次请求。而且第二次请求i必定失败 这就悲催了。脑子懵懵的&#xff01; 由于我这就是个小活儿&#xff0c;于是环境就是使用…