贪心算法与盛雨水问题

啥是盛雨水问题?给个图就熟悉了

欸?


这其中的关键在于:

1. 容量2D化就是长 * 宽

2. 木桶效应:宽取决于短板

那我们来分析,怎么样能达到最佳的结果呢?穷举一下所有可能性不就好了?每两个板子构成一个组合,挨个计算一遍,找个最大值!

欸?不错!是个思路。


但!我们看看是不是需要每两个之间都得计算呢?假如,我们把初始位置设置为最边边的两根板子上(后面会说为什么这么初始化)。

计算当前的容量,然后换种可能性。怎么换?换i还是换j?

1. 换i,按当前的状态看,i是较短的那个,因为 3 < 4,所以i是较短的那个。当i右移的时候,遇到的新的板子,可能比当前高,也可能变矮。如果变,容量变化不定。如果变,新的容量会变小。

2. 换j,按当前的状态看,j是较长的那个,当j左移的时候,遇到的新的板子,可能比当前高,也可能变矮。如果变,那么新的容量一定变小。如果变,新的容量更会变小。

所以从上面来看,换i是最合适的。其实是每次换一个短板,这样就找到一个让容量变大的可能性。

/* 最大容量:贪心 */
int maxCapacity(int[] ht) {// 初始化 i, j,使其分列数组两端int i = 0, j = ht.length - 1;// 初始最大容量为 0int res = 0;// 循环贪心选择,直至两板相遇while (i < j) {// 更新最大容量int cap = Math.min(ht[i], ht[j]) * (j - i);res = Math.max(res, cap);// 向内移动短板if (ht[i] < ht[j]) {i++;} else {j--;}}return res;
}

所以,为什么从两边初始化?不是从一侧,或者中间?

其实这里暗含了一个变量,如果初始化为两侧,无论移动哪个(i + 1 / j - 1),长肯定是变短的

这就把产生容量变化的影响因素变成了板子的高度。否则你需要考虑是长度导致的容量变化还是板子的高度导致的容量变化

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

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

相关文章

OAK相机的RGB-D彩色相机去畸变做对齐

▌低畸变标准镜头的OAK相机RGB-D对齐的方法 OAK相机内置的RGB-D管道会自动将深度图和RGB图对齐。其思想是将深度图像中的每个像素与彩色图像中对应的相应像素对齐。产生的RGB-D图像可以用于OAK内置的图像识别模型将识别到的2D物体自动映射到三维空间中去&#xff0c;或者产生的…

Information Theoretical Estimators (ITE) Toolbox的使用(MATLAB)

Information Theoretical Estimators (ITE) Toolbox是什么 官方文档&#xff1a; ITE is can estimate several entropy, mutual information, divergence, association measures, cross quantities and kernels on distributions. Thanks to its highly modular design, ITE …

STM32G474硬件CRC16和软件CRC16校验

1、硬件CRC校验和软件CRC校验的多项式&#xff0c;以及初始值 #define CRC_Hardware_POLYNOMIAL_16B 0x8005 //硬件CRC多项式为0x8005 //CRC16x^16 x^15 x^2 1&#xff0c;因为bit151,bit21,bit01&#xff0c;所以正向校验的多项式的值为0x8005 //CRC校验分为正向校验和反…

UWA Gears:Frame Capture模式 - 着色器查看器

UWA Gears 是UWA最新发布的无SDK性能分析工具。针对移动平台&#xff0c;提供了实时监测和截帧分析功能&#xff0c;帮助您精准定位性能热点&#xff0c;提升应用的整体表现。 在上周的文章中&#xff0c;我们详细介绍了网格查看器的功能&#xff0c;介绍如何通过网格数据优化…

微服务电商平台课程三:基础环境搭建

后端基础环境 工具版本号功能说明下载JDK1.8java编译运行的基本环境Java Downloads | Oracledocker27.0.3容器化部署Windows | Docker Docsgit2.46.2代码版本管理&#xff0c;多人协作代码开发Git for Windowsmaven3.9.9服务的依赖管理Maven – Download Apache MavenMySQL5.7…

第十四章 章节练习echarts饼图渲染

目录 一、引言 二、完整代码 三、总结 一、引言 通过前面几个章节的学习&#xff0c;再结合日常项目中经常会使用到的echarts图&#xff0c;来完整以下功能需求&#xff0c;增强对知识点的巩固&#xff1a; 1. 基本渲染 2. 添加功能 3. 删除功能 4. 饼图渲染 运行效果图…

厨艺爱好者的在线互动平台:Spring Boot实现

摘 要 使用旧方法对厨艺交流信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在厨艺交流信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。 这次开发的厨艺交流平台功能…

WUP-MY-POS-PRINTER 旻佑热敏打印机票据打印uniapp插件使用说明

插件地址&#xff1a;WUP-MY-POS-PRINTER 旻佑热敏打印机票据打印安卓库 简介 本插件主要用于旻佑热敏打印机打印票据&#xff0c;不支持标签打印。适用于旻佑的各型支持票据打印的热敏打印机。本插件开发时使用的打印机型号为MY-805嵌入式面板打印机&#xff0c;其他型号请先…

2006-2023年各地级市债务余额数据

2006-2023年各地级市债务余额数据 1、时间&#xff1a;2006-2023年 2、来源&#xff1a;整理自wind 3、指标&#xff1a;地区、地方政府债-债券数量(只)、地方政府债-债券余额(亿)、地方政府债-债券余额占比(%)、城投债-债券数量(只)、城投债-债券余额(亿)、城投债-债券余额…

CentOS7安装Docker-2024

CentOS7安装Docker-2024 安装 更新yum仓库&#xff1a; yum -y update安装yum-utils并配置阿里云的docker仓库和相关插件&#xff1a; sudo yum install -y yum-utilsyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum i…

121.WEB渗透测试-信息收集-ARL(12)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;120.WEB渗透测试-信息收集-ARL&#xff08;11&#xff09; 点击管理控制台 连接成功&…

Java | Leetcode Java题解之第513题找树左下角的值

题目&#xff1a; 题解&#xff1a; class Solution {public int findBottomLeftValue(TreeNode root) {int ret 0;Queue<TreeNode> queue new ArrayDeque<TreeNode>();queue.offer(root);while (!queue.isEmpty()) {TreeNode p queue.poll();if (p.right ! nu…

w005基于Springboot学生心理咨询评估系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

SpringCloud接入nacos配置中心

这里写自定义目录标题 版本选择项目搭建pom.xml本地的 application.ymlchenfu-miniapp-dev.yml 中的配置项接收配置的实体类 版本选择 spring-cloud-Alibaba版本依赖关系 本文章&#xff0c;采用的 springboot 版本是 2.6.13&#xff0c;spring-cloud-alibaba 版本是 2021.0.5…

(二十二)、k8s 中的关键概念

文章目录 1、总体概览2、第一层&#xff1a;物理机、集群、Node、Pod 之间的关系2、第二层&#xff1a;命名空间 Namespace3、定义4、控制平面&#xff08;Control Plane&#xff09;5、特别的概念 Service6、Deployment 经过 之前几篇文章对 k8s 的实践&#xff0c;结合实践&…

AI模型库 : 下一个大型供应链攻击目标

像 Hugging Face 这样的AI模型平台&#xff0c;很容易受到攻击者多年来通过 npm、PyPI 和其他开源存储库成功执行的同类攻击的影响 Hugging Face 等AI模型存储库为攻击者提供了与 npm 和 PyPI 等开源公共存储库相同的将恶意代码植入开发环境的机会。 在今年 4 月即将举行的 Bl…

元学习-学习笔记

学习视频&#xff1a;火炉课堂 | 元学习(meta-learning)到底是什么鬼&#xff1f;_哔哩哔哩_bilibili 一、从传统机器学习到元学习 我们传统的机器学习&#xff0c;是手工设计一个模型&#xff0c;然后将训练数据投进模型中进行训练&#xff0c;得到一个最优的模型参数&#x…

文件inode

磁盘结构&#xff1a; 众所周知扇面是磁盘存储数据的地方&#xff0c;而一个磁盘有个6个磁盘面&#xff0c;而磁头指向都是相同半径的扇面&#xff0c;所以我们可以抽象出来一个三维指针&#xff1b; 这样我们就抽象出来了一个磁盘&#xff0c;而我们的每个磁盘面都有相同名字…

MES系列- 统计过程分析(SPC)实现

MES系列文章目录 ISA-95制造业中企业和控制系统的集成的国际标准-(1) ISA-95制造业中企业和控制系统的集成的国际标准-(2) ISA-95制造业中企业和控制系统的集成的国际标准-(3) ISA-95制造业中企业和控制系统的集成的国际标准-(4) ISA-95制造业中企业和控制系统的集成的国际标准…

MMA: Multi-Modal Adapter for Vision-Language Models

两个观察 图1所示。各种基于transformer的CLIP模型中不同层的数据集级识别精度。这个实验是为了确定样本属于哪个数据集。我们用不同的种子运行了三次&#xff0c;并报告了每层识别精度的平均值和标准差。 X E m b e d XEmbed XEmbed是指变压器块之前的文本或图像嵌入层&#x…