【代码随想录第45天】动态规划5

news2024/10/6 3:41:58

代码随想录第45天| 动态规划5

  • 1049. 最后一块石头的重量 II
  • 494. 目标和
  • 474.一和零

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

LeetCode题目:1049. 最后一块石头的重量 II
代码随想录:1049. 最后一块石头的重量 II

在这里插入图片描述

思路就是尽量把石头分成重量总和相等的两堆,想明白这个,就跟416题没什么区别了

class Solution {
public:
//尽量把石头分成重量总和相等的两堆
    int lastStoneWeightII(vector<int>& stones) {
        int sum = 0;
        for(int n : stones){
            sum += n;
        }
        int target = sum / 2;
        vector<int> dp(target + 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 abs(dp[target] - (sum-dp[target]));

    }
};

494. 目标和

LeetCode题目: 494. 目标和
代码随想录: 494. 目标和

在这里插入图片描述
假设加法的总和为x,那么减法对应的总和就是sum - x。
所以我们要求的是 x - (sum - x) = target
x = (target + sum) / 2,此时问题就转化为,装满容量为x的背包,有几种方法。
若不能整除2,无解,直接return 0
01背包问题
dp[j] 表示:填满j(包括j)这么大容积的包,有dp[j]种方法
递推公式:dp[j] += dp[j - nums[i]]
初始化dp[0] = 1

   int findTargetSumWays(vector<int>& nums, int target) {
        int sum = 0;
        for(int i = 0; i < nums.size(); i++){
            sum += nums[i];
        }
        if (abs(target) > sum) return 0;
        if((target + sum) % 2 == 1) return 0;
        int x = (target + sum) / 2;
        vector<int> dp(x + 1); //装满容量为x的背包有多少种方法
        dp[0] = 1;
        for(int i = 0; i < nums.size(); i++){
            for(int j = x; j >= nums[i]; j--){
                dp[j] += dp[j - nums[i]];
            }
        }
        return dp[x];
    }

时间复杂度:O(n × m),n为正数个数,m为背包容量
空间复杂度:O(m),m为背包容量

474.一和零

LeetCode题目:474.一和零
代码随想录:474.一和零

在这里插入图片描述
m 和 n相当于是一个背包,两个维度的01背包。
二维dp[i][j]:装满i个0,j个1最多背了dp[i][j]个物品.

01背包:dp[j] = max(dp[j], dp[j - weight] + val[i])
每个物品重量为: x 个 0, y 个1
则有:
dp[i][j] = max(dp[i][j], dp[i - x][j - y] + 1);
初始化:0

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 x = 0, y = 0;
            for(char c : str){
                if(c == '0') x++;
                else 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];
    }
};

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

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

相关文章

计算机操作系统-第十二天

目录 进程控制的基本概念 什么是进程控制 如何实现进程控制 如何实现原语的”原子性“ 与进程控制相关的原语 进程创建中的原语 进程终止中的原语 进程的阻塞和唤醒中的原语 进程的切换中的原语 知识滚雪球-程序是如何运行的&#xff1f;&#xff1a; 本节思维导图 进…

数据可视化与GraphQL:利用Apollo创建仪表盘

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

第二证券:风电概念强势拉升,威力传动“20cm”涨停,双一科技等大涨

风电概念20日盘中强势拉升&#xff0c;到发稿&#xff0c;威力传动“20cm”涨停&#xff0c;双一科技涨超17%&#xff0c;顺发恒业亦涨停&#xff0c;金雷股份、大金重工涨约7%&#xff0c;新强联、海力风电涨超5%。 音讯面上&#xff0c;9月以来江苏、广东海风项目加快推动&a…

前端数据可视化之【title、legend、tooltip、toolbox 】配置项

目录 &#x1f31f;Echarts配置项&#x1f31f;Echarts配置项之 title组件&#x1f31f;Echarts配置项之 legend组件&#x1f31f;Echarts配置项之 tooltip组件&#x1f31f;Echarts配置项之 toolbox组件&#x1f31f;写在最后 &#x1f31f;Echarts配置项 ECharts开源来自百度…

如何解决香港服务器使用的常见问题

​  站长们在选择香港服务器租用时会考虑到它的各种性能以及稳定性&#xff0c;这是必须的。但是使用过程中还有些问题也不容忽视&#xff0c;比如&#xff1a;带宽资源是否短缺&#xff0c;是否存在安全漏洞&#xff0c;连接是否正常等这些问题也要考虑到。 香港服务器使用中…

百度地图API:JavaScript开源库几何运算判断点是否在多边形内(电子围栏)

百度地图JavaScript开源库&#xff0c;是一套基于百度地图API二次开发的开源的代码库。目前提供多个lib库&#xff0c;帮助开发者快速实现在地图上添加Marker、自定义信息窗口、标注相关开发、区域限制设置、几何运算、实时交通、检索与公交驾车查询、鼠标绘制工具等功能。 判…

搭建一个windows的DevOps环境记录

边搭建边记录&#xff0c;整个DevOps环境的搭建可能会很久。。。 一、安装Jenkins&#xff1a; 参考&#xff1a;Jenkins基础篇--windows安装Jenkins-CSDN博客 注意上面选择JDK的路径&#xff0c;选择到安装目录&#xff0c;该目录并不一定要在path中配置了&#xff08;就是…

Qt基础 QScatterSeries

QScatterSeries类是Qt Charts模块的一部分&#xff0c;用于表示散点图。 QScatterSeries* series new QScatterSeries(); // 创建离散点数据series->setName("圆点样式");series->setMarkerShape(QScatterSeries::MarkerShapeCircle); //设置位圆形series-&…

SpringBoot + MyBatis 在 jar 中可以启动但是 Idea中无法启动的原因

现象 在idea中启动始终卡住&#xff0c;查看线程堆栈发现一直在mybatis的处理过程中&#xff0c;细究了一下堆栈发现mybatis有使用远程方式加载类的情况&#xff0c;并且此时cpu会飙升&#xff0c; 在命令行中使用java -jar 的形式可以正常启动&#xff0c;但是在idea中启动始…

论文阅读 | RAFT: Recurrent All-Pairs Field Transforms for Optical Flow

RAFT: Recurrent All-Pairs Field Transforms for Optical Flow ECCV2020光流任务best paper 论文地址&#xff1a;【here】 代码地址&#xff1a;【here】 介绍 光流是对两张相邻图像中的逐像素运动的一种估计。目前碰到的一些困难包括&#xff1a;物体的快速运动&#xff…

UE4 UltraDynamicSky 天气与水体交互

最上面的Lerp的A通道为之前的水面效果&#xff0c;B是做的冰面效果 用Dynamic_Landscape_Weather_Effects的BaseColor的R通道四舍五入作为Lerp的Alpha值 使用一张贴图&#xff0c;乘以RadialGradientExponential对材质边缘做弱化&#xff0c;RadialGradientExponential的Raid…

4.7 IP多播

思维导图&#xff1a; **4.7.1 IP多播的基本概念** --- **1. 定义和背景** - IP多播&#xff1a;从一个源点发送信息至多个终点的技术。 - 1988年&#xff1a;Steve Deering首次提及IP多播。 - 1992年&#xff1a;IETF进行了首次IP多播试验&#xff0c;当时有20个网点参与。 …

Python算法:八大排序算法以及速度比较

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

大数据测试用例分析

基于大数据分析&#xff0c;对业务系统产生的日志进行智能分析&#xff0c;能够识别日志中的接口、参数、业务流&#xff0c;并依据分析的结果生成测试用例。 问题与背景 业务复杂 业务系统的复杂性&#xff0c;对测试人员的业务能力提出严格要求&#xff0c;加重测试成本。 …

【深度学习-第4篇】使用MATLAB快速实现CNN多变量回归预测

上一篇我们讲了使用CNN进行分类的MATLAB代码。 这一篇我们讲CNN的多变量回归预测。 是的&#xff0c;同样是傻瓜式的快速实现。 一、什么是多变量回归预测 多变量回归预测则是指同时考虑多个输入特征进行回归预测。举几个例子&#xff1a; 房价预测&#xff1a;给定一组房…

苹果开发者 Xcode发布TestFlight全流程

打包前注意事项 使用Xcode导出安装包之前&#xff0c;必须先确认账户的所有合约是否全部同意&#xff0c;如果有不同意的&#xff0c;在出包的时候会弹出报错 点击前往苹果开发者官网https://appstoreconnect.apple.com/agreements/ 登录自己的开发者账户后&#xff0c;可以看…

【LeetCode】61. 旋转链表

1 问题 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3] 示例 2&#xff1a; 输入&#xff1a;head [0,1,2], k 4 输出&…

用Nginx搭建一个具备缓存功能的反向代理服务

在同一台服务器上&#xff0c;使用nginx提供服务&#xff0c;然后使用openresty提供反向代理服务。 参考《Ubuntu 20.04使用源码安装nginx 1.14.0》安装nginx。 参考《用Nginx搭建一个可用的静态资源Web服务器》搭建静态资源Web服务器&#xff0c;但是/nginx/conf/nginx.conf里…

点云cloudpoint生成octomap的OcTree的两种方法以及rviz可视化

第一种&#xff1a;在自己的项目中将点云通过ros的topic发布&#xff0c;用octomap_server订阅点云消息&#xff0c;在octomap_server中生成ocTree 再用rviz进行可视化。 创建工作空间&#xff0c;记得source mkdir temp_ocotmap_test/src cd temp_ocotmap_test catkin_make…

系列一、文件

一、概述 文件对我们并不陌生&#xff0c;简单的讲文件就是保存数据的地方&#xff0c;比如大家经常使用的word文档&#xff0c;txt文件&#xff0c;excel文件&#xff0c;mp3音乐文件&#xff0c;mp4视频文件...等等&#xff0c;它既可以是一张图片&#xff0c;也可以是一段视…