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

leetcode 42. 接雨水

2023.8.29

         本题可以用双指针做,求出每一列能盛的雨水,再相加即可。不过暴力法会超时,需要优化。

双指针(暴力):

class Solution {
public:int trap(vector<int>& height) {int ans = 0;for(int i=1; i<height.size()-1; i++){int max_rheight = height[i]; //记录当前柱子右边的最高柱子int max_lheight = height[i]; //记录当前柱子左边的最高柱子for(int r=i+1; r<height.size(); r++){max_rheight = max(max_rheight,height[r]);}for(int l=i-1; l>=0; l--){max_lheight = max(max_lheight,height[l]);}ans += max(0 , min(max_rheight,max_lheight)-height[i]);}return ans;}
};

双指针(优化):

        上面双指针暴力法每次遍历都需要求一次当前柱子左右两侧的最高柱子,这样有重复,自然会超时。 优化办法是设置两个数组left和right,分别存储每一个柱子的左侧最高柱子,及右侧最高柱子,这样子就不用重复遍历了。 代码如下:

class Solution {
public:int trap(vector<int>& height) {//求出当前柱子的左侧最高柱子以及右侧最高柱子,保存在两数组中。vector<int> left(height.size());vector<int> right(height.size());int max_lheight = height[0];int max_rheight = height[height.size()-1];for(int i=1; i<left.size()-1; i++){left[i] = max_lheight;max_lheight = max(max_lheight,height[i]);}for(int i=right.size()-2; i>=1; i--){right[i] = max_rheight;max_rheight = max(max_rheight,height[i]);}//遍历每一列求出最大雨水int ans = 0;for(int i=1; i<height.size()-1; i++){ans += max(0 , min(left[i],right[i])-height[i]);}return ans;}
};

http://www.lryc.cn/news/155472.html

相关文章:

  • 【Lychee图床】本地电脑搭建私人图床,公网远程访问
  • 【MySQL系列】-ORDER BY……HAVING详解及limit
  • 浅析Keil MDK下串行Flash的下载算法设计
  • springboot自动装配原理,手写一个starter。
  • 革命性的电子元件:RAD继电器 | 百能云芯
  • 文献阅读:Deep Learning Enabled Semantic Communication Systems
  • 巨人互动|游戏出海游戏出海效果怎样?
  • 二、GoLang输出HelloWorld、变量定义、数据类型的转换
  • Mars3d图层树//图层管理加载时设置默认折叠的状态
  • 区块链技术|DApp与传统应用程序的关键区别
  • Python 加密解密技巧大揭秘:让你的数据安全无忧
  • C#判断字符是否为utf16编码
  • centos7上hive3.1.3安装及配置
  • Redis面试题(笔记)
  • iPhone 15 Pro展示设计:7项全新变化呈现
  • 【六袆 - Windows】PL/SQL instantclient安装包下载;PL/SQL双击登录配置
  • Springboot+mybatis-plus+dynamic-datasource 切换数据源失败问题总结
  • QuantLib学习笔记——InterestRate的应用
  • 记录--解决前端内存泄漏:问题概览与实用解决方案
  • IP初学习
  • live5555 testProgs目录
  • yolov5模型s,l,m,x的区别
  • Springboot 实践(13)spring boot 整合RabbitMq
  • YoloV8改进策略:轻量级Slim Neck打造极致的YoloV8
  • 使用java代码给Excel加水印,代码全,进阶版
  • day37:网编day4,多点通信和并发服务器
  • STM32 硬件IIC 控制OLED I2C卡死问题
  • Redis图文指南
  • C++17 std::string_view介绍与使用
  • 写得了代码,焊得了板!嵌入式开发工程师必修之代码管理方案(下)