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

42.接雨水

目录

  • 题目
  • 过程
  • 解法

题目

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。在这里插入图片描述

过程

在这里插入图片描述
发现有特殊情况就是,最高峰的地方,如果右边小于他,然后再右边也都很小的话,并不会存雨水,就是两边都要有边界。然后就想了一种思路,就是找凹陷。

class Solution {
public:int trap(vector<int>& height) {int l=0;//l和r来保存左右边界int r=1;int n=height.size();int room=0;//用来存储雨水while(height[l]==0){l++;r=l+1;}//找到第一个左边界while(r<n){if(height[r]<height[l]){//继续搜索凹陷r++;}else if(height[r]>height[l]){//找到了凹陷,计算roomfor(int i=l+1;i<r;i++){room+=height[l]-height[i];}l=r;r++;}else{if(r-l==1){//如果相邻l=r;r++;}else{//找到了凹陷,计算roomfor(int i=l+1;i<r;i++){room+=height[l]-height[i];}l=r;r++;}}}return room;}
};

第二个用例对了,第一个有问题

在这里插入图片描述

应该是右边界的问题,如果一直找不到右边等高的,那就直接执行完了。没有考虑到局部凹陷的情况。
在这里插入图片描述

解法

class Solution {
public:int trap(vector<int>& height) {int ans = 0;int left = 0, right = height.size() - 1;int leftMax = 0, rightMax = 0;while (left < right) {leftMax = max(leftMax, height[left]);rightMax = max(rightMax, height[right]);if (height[left] < height[right]) {ans += leftMax - height[left];++left;} else {ans += rightMax - height[right];--right;}}return ans;}
};

这个思路就是克服了我上面那个忽略了局部的问题,因为我的r也是从左边开始遍历的,不可能先遍历到最右边再找有没有边界。r从最右边开始,
如果左边小于最右边,那么就是假设从左边开始算存雨水的量。因为之前做过一个题是木桶理论,存水量取决于短板。所以要从小的一边开始遍历。然后还有两个leftmax和rightmax来保存局部的存水量。因为只要左边小于右边,那一定可以存到水。
在这里插入图片描述

相关文章:

42.接雨水

目录 题目过程解法 题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 过程 发现有特殊情况就是&#xff0c;最高峰的地方&#xff0c;如果右边小于他&#xff0c;然后再右边也都很小的话&#xff0c…...

使用Java代码操作Kafka(五):Kafka消费 offset API,包含指定 Offset 消费以及指定时间消费

文章目录 1、指定 Offset 消费2、指定时间消费 1、指定 Offset 消费 auto.offset.reset earliest | latest | none 默认是 latest &#xff08;1&#xff09;earliest&#xff1a;自动将偏移量重置为最早的偏移量&#xff0c;–from-beginning &#xff08;2&#xff09;lates…...

Ubuntu安装不同版本的opencv,并任意切换使用

参考&#xff1a; opencv笔记&#xff1a;ubuntu安装opencv以及多版本共存 | 高深远的博客 https://zhuanlan.zhihu.com/p/604658181 安装不同版本opencv及共存、切换并验证。_pkg-config opencv --modversion-CSDN博客 Ubuntu下多版本OpenCV共存和切换_ubuntu20如同时安装o…...

突破内存限制:Mac Mini M2 服务器化实践指南

本篇文章&#xff0c;我们聊聊如何使用 Mac Mini M2 来实现比上篇文章性价比更高的内存服务器使用&#xff0c;分享背后的一些小的思考。 希望对有类似需求的你有帮助。 写在前面 在上文《ThinkPad Redis&#xff1a;构建亿级数据毫秒级查询的平民方案》中&#xff0c;我们…...

【排版教程】Word、WPS 分节符(奇数页等) 自动变成 分节符(下一页) 解决办法

毕业设计排版时&#xff0c;一般要求每章节的起始页为奇数页&#xff0c;空白页不显示页眉和页脚。具体做法如下&#xff1a; 1 Word 在一个章节的内容完成后&#xff0c;在【布局】中&#xff0c;点击【分隔符】&#xff0c;然后选择【奇数页】 这样在下一章节开始的时&…...

【在Linux世界中追寻伟大的One Piece】多线程(二)

目录 1 -> 分离线程 2 -> Linux线程互斥 2.1 -> 进程线程间的互斥相关背景概念 2.2 -> 互斥量mutex 2.3 -> 互斥量的接口 2.4 -> 互斥量实现原理探究 3 -> 可重入VS线程安全 3.1 -> 概念 3.2 -> 常见的线程不安全的情况 3.3 -> 常见的…...

flink学习(8)——窗口函数

增量聚合函数 ——指窗口每进入一条数据就计算一次 例如&#xff1a;要计算数字之和&#xff0c;进去一个12 计算结果为20&#xff0c; 再进入一个7 ——结果为27 reduce aggregate(aggregateFunction) package com.bigdata.day04;public class _04_agg函数 {public static …...

「实战应用」如何用图表控件LightningChart .NET实现散点图?(一)

LightningChart .NET完全由GPU加速&#xff0c;并且性能经过优化&#xff0c;可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D&#xff0c;高级3D&#xff0c;Polar&#xff0c;Smith&#xff0c;3D饼/甜甜圈&#xff0c;地理地图和GIS图表以及适用于科…...

鸿蒙Native使用Demo

DevecoStudio使用Native 今天,给大家带来的是关于DevecoStudio中使用Native进行开发 个人拙见:为什么要使用Native?无论是JS还是TS在复杂的情况下运行速度,肯定不如直接操作内存的C/C的运行速度快,所以,会选择使用Native;这里面的过程是什么?通过映射转化,使用napi提供的接口…...

29.UE5蓝图的网络通讯,多人自定义事件,变量同步

3-9 蓝图的网络通讯、多人自定义事件、变量同步_哔哩哔哩_bilibili 目录 1.网络通讯 1.1玩家Pawn之间的同步 1.2事件同步 1.3UI同步 1.4组播 1.5变量同步 1.网络通讯 1.1玩家Pawn之间的同步 创建一个第三人称项目 将网络模式更改为监听服务器&#xff0c;即将房主作为…...

Scala—列表(可变ListBuffer、不可变List)用法详解

Scala集合概述-链接 大家可以点击上方链接&#xff0c;先对Scala的集合有一个整体的概念&#x1f923;&#x1f923;&#x1f923; 在 Scala 中&#xff0c;列表&#xff08;List&#xff09;分为不可变列表&#xff08;List&#xff09;和可变列表&#xff08;ListBuffer&…...

【论文复现】偏标记学习+图像分类

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 偏标记学习图像分类 概述算法原理核心逻辑效果演示使用方式参考文献 概述 本文复现论文 Progressive Identification of True Labels for Pa…...

C嘎嘎探索篇:栈与队列的交响:C++中的结构艺术

C嘎嘎探索篇&#xff1a;栈与队列的交响&#xff1a;C中的结构艺术 前言&#xff1a; 小编在之前刚完成了C中栈和队列&#xff08;stack和queue&#xff09;的讲解&#xff0c;忘记的小伙伴可以去我上一篇文章看一眼的&#xff0c;今天小编将会带领大家吹奏栈和队列的交响&am…...

AIGC-----AIGC在虚拟现实中的应用前景

AIGC在虚拟现实中的应用前景 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术的应用也迎来了新的契机。AIGC与VR的结合为创造沉浸式体验带来了全新的可能性&#xff0c;这种组合不仅极大地降低了VR内容的…...

Django 路由层

1. 路由基础概念 URLconf (URL 配置)&#xff1a;Django 的路由系统是基于 urls.py 文件定义的。路径匹配&#xff1a;通过模式匹配 URL&#xff0c;并将请求传递给对应的视图处理函数。命名路由&#xff1a;每个路由可以定义一个名称&#xff0c;用于反向解析。 2. 基本路由配…...

《硬件架构的艺术》笔记(八):消抖技术

简介 在电子设备中两个金属触点随着触点的断开闭合便产生了多个信号&#xff0c;这就是抖动。 消抖是用来确保每一次断开或闭合触点时只有一个信号起作用的硬件设备或软件。&#xff08;就是每次断开闭合只对应一个操作&#xff09;。 抖动在某些模拟和逻辑电路中可能产生问…...

Spring 与 Spring MVC 与 Spring Boot三者之间的区别与联系

一.什么是Spring&#xff1f;它解决了什么问题&#xff1f; 1.1什么是Spring&#xff1f; Spring&#xff0c;一般指代的是Spring Framework 它是一个开源的应用程序框架&#xff0c;提供了一个简易的开发方式&#xff0c;通过这种开发方式&#xff0c;将避免那些可能致使代码…...

【算法】连通块问题(C/C++)

目录 连通块问题 解决思路 步骤&#xff1a; 初始化&#xff1a; DFS函数&#xff1a; 复杂度分析 代码实现&#xff08;C&#xff09; 题目链接&#xff1a;2060. 奶牛选美 - AcWing题库 解题思路&#xff1a; AC代码&#xff1a; 题目链接&#xff1a;687. 扫雷 -…...

如何选择黑白相机和彩色相机

我们在选择成像解决方案时黑白相机很容易被忽略&#xff0c;因为许多新相机提供鲜艳的颜色&#xff0c;鲜明的对比度和改进的弱光性能。然而&#xff0c;有许多应用&#xff0c;选择黑白相机将是更好的选择&#xff0c;因为他们产生更清晰的图像&#xff0c;更好的分辨率&#…...

Rust 力扣 - 740. 删除并获得点数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 首先对于这题我们如果将所有点数装入一个切片f中&#xff0c;该切片f中的i号下标表示所有点数为i的点数之和 那么这题就转换成了打家劫舍这道题&#xff0c;也就是求选择了切片中某个下标的元素后&#xff0c;该…...

保姆级教程:在银河麒麟V10上为gcc编译的程序添加可执行权限(附kysec_set命令详解)

银河麒麟V10系统下gcc编译程序执行权限问题全解析 在银河麒麟V10操作系统中&#xff0c;许多开发者首次使用gcc编译程序后&#xff0c;会遇到一个看似简单却令人困惑的问题&#xff1a;明明已经为生成的可执行文件添加了传统Linux权限&#xff08;如chmod x&#xff09;&#…...

别再死记公式了!用Python+NetworkX可视化理解关系闭包(附完整代码)

用PythonNetworkX玩转关系闭包&#xff1a;从数学抽象到动态可视化的实战指南 第一次接触"关系闭包"这个概念时&#xff0c;我盯着课本上那些晦涩的数学符号和矩阵运算整整半小时&#xff0c;依然云里雾里。直到我用Python的NetworkX库将社交网络中的关注关系画成图形…...

SwiftHTTP文件上传完全指南:从基础到企业级应用

SwiftHTTP文件上传完全指南&#xff1a;从基础到企业级应用 【免费下载链接】SwiftHTTP Thin wrapper around NSURLSession in swift. Simplifies HTTP requests. 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftHTTP 在iOS和macOS开发中&#xff0c;SwiftHTTP文件上…...

图神经网络终于能“上生产”了?SITS 2026发布首个支持实时增量训练的AI原生图引擎(附Benchmark对比:吞吐提升6.8×,延迟压至12ms)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI原生图计算应用&#xff1a;SITS 2026图神经网络工程化方案 SITS 2026 是面向大规模动态图场景的AI原生图计算框架&#xff0c;深度融合GNN训练、图拓扑实时更新与边缘-云协同推理能力。其核心设计摒…...

DAG账本项目学习总结(七):MySQL 持久化与 Redis 缓存机制源码解析

1. 上期回顾在第六期中&#xff0c;我们分析了云端广播与交易确认机制。可以简单概括为&#xff1a;融合终端生成交易↓ 写入本地 DAG 账本↓ 广播给 cloud 和其他 fusion↓ cloud 插入全局账本↓ cloud 根据累计权重产生确认动作↓ 确认动作同步回各融合终端到这里为止&#x…...

算法基础(十一)—— 递归树如何看懂分治算法的运行时间

1. 定位导航 前面已经学习了分治思想&#xff1a; 分解 → 解决 → 合并分治算法经常可以写成递归式。 例如归并排序&#xff1a; 先把数组拆成左右两半&#xff1b; 分别排序左右两半&#xff1b; 再合并两个有序数组。它的运行时间可以粗略写成&#xff1a; T(n)2T(n/2)n T(n…...

避坑指南:SV检测结果里那些奇怪的‘BND’和符号,到底在说什么?

结构变异检测实战&#xff1a;如何破译VCF文件中的BND密码 当你第一次打开SV检测生成的VCF文件时&#xff0c;那些DEL(缺失)和DUP(重复)的标签还算友好&#xff0c;但突然出现的BND(易位)和像[chr12:...[T、]chr12:...]A这样的神秘符号&#xff0c;是不是让你瞬间怀疑自己是否在…...

3分钟快速上手TransNet V2:视频镜头检测的终极完整指南

3分钟快速上手TransNet V2&#xff1a;视频镜头检测的终极完整指南 【免费下载链接】TransNetV2 TransNet V2: Shot Boundary Detection Neural Network 项目地址: https://gitcode.com/gh_mirrors/tr/TransNetV2 在视频内容爆炸式增长的今天&#xff0c;如何快速准确地…...

图像处理核心技术:分辨率、信噪比与形态学算法解析

1. 图像处理基础概念解析在数字图像处理领域&#xff0c;我们经常需要面对几个核心问题&#xff1a;如何量化系统的分辨能力&#xff1f;如何评估图像质量&#xff1f;如何从噪声中提取有用信息&#xff1f;这些问题的答案构成了现代图像处理技术的理论基础。作为一名从业十余年…...

企业级AI低代码平台kweaver-dip:架构解析与工作流实战

1. 项目概述&#xff1a;一个面向企业级AI应用开发的低代码平台 最近在和一些做企业数字化转型的朋友聊天&#xff0c;大家普遍提到一个痛点&#xff1a;AI能力很强&#xff0c;但想把它真正用起来&#xff0c;门槛实在太高了。不是每个团队都有能力养一支算法工程师队伍&#…...