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

LeetCode 刷题【42. 接雨水】

42. 接雨水

自己做

解:双指针左右分割容器

class Solution {
public:int trap(vector<int>& height) {int res = 0;int len = height.size();if(len <= 2)      //构不成一个容器了,直接返回return res;int end = len - 1;        //右边界int start = 0;            //左边界//对左边的边界初始化while(height[start] <= height[start + 1]){    //排除前面部分start++;if(start == end - 1)      //构不成一个容器了,直接返回return res;}//对右边的边界初始化while(height[end - 1] >= height[end]){    //排除后面部分end--;if(end == start + 1)      //构不成一个容器了,直接返回return res;}int left = start + 1;     //左边容器起始int right = end - 1;      //右边容器起始//从左往右靠拢int left_capacity = 0;while(left <= end){if(height[left] < height[start]){ //当遇到比边界小的时,将其看做底,计算当前容器的容量left_capacity += height[start] - height[left];    //累加当前容器的容量}else{                           //当遇到比边界大或者相等时,该容器就封边了,开始找下个容器start = left;                 //新的容器边界res += left_capacity;          //将该容器的容量累加进结果中left_capacity = 0;            //重置容量}left++;                         //延伸容器}//从右往左靠拢int right_capacity = 0;while(right >= start){if(height[right] < height[end]){ //当遇到比边界小的时,将其看做底,计算当前容器的容量right_capacity += height[end] - height[right];    //累加当前容器的容量}else{                           //当遇到比边界大或者相等时,该容器就封边了,开始找下个容器end = right;                 //新的容器边界res += right_capacity;          //将该容器的容量累加进结果中right_capacity = 0;            //重置容量}right--;                         //延伸容器}return res;}
};

今日总结

好耶,写的第一版代码直接没有任何报错地过了,也是能跑到最优解的程度,今天没有任何调试,一遍过

http://www.xdnf.cn/news/17811.html

相关文章:

  • 大规模Go网络应用的部署与监控实战指南
  • python30-正则表达式
  • 应急救援智能接处警系统——科技赋能应急,筑牢安全防线
  • 线程P5 | 单例模式[线程安全版]~懒汉 + 饿汉
  • 从0开始学习Java+AI知识点总结-15.后端web基础(Maven基础)
  • UI-TARS-Desktop 产品发展史:从实验室原型到企业级解决方案
  • 流处理、实时分析与RAG驱动的Python ETL框架:构建智能数据管道(中)
  • python中的map函数
  • Android UI(一)登录注册 - Compose
  • 【数据可视化-89】基孔肯雅热病例数据分析与可视化:Python + pyecharts洞察疫情动态
  • RH134 管理基本存储知识点
  • 【C#补全计划】泛型约束
  • OpenCv(二)——边界填充、阈值处理
  • 37 C++ STL模板库6-string_view
  • Mybatis实现页面增删改查
  • 解锁AI潜能:五步写出让大模型神级指令
  • C#面试题及详细答案120道(01-10)-- 基础语法与数据类型
  • 《嵌入式 C 语言编码规范个人笔记》参考华为C语言规范标准
  • 机器学习-支持向量机器(SVM)
  • CPP模板编程
  • Python学习-----3.基础语法(2)
  • 广义矩估计随机近似中1.2和2.1的差异
  • 如何手动开启 Hyper-V?Windows 10/11 详细开启教程
  • Mybatis 源码解读-Plugin插件源码
  • 系统设计——DDD领域模型驱动实践
  • 如何写出更清晰易读的布尔逻辑判断?
  • 码上爬第九题【协程+webpack】
  • rustdesk 开源遥控软件
  • Wireshark中捕获的大量UDP数据
  • C# 结构体与类的区别是什么?