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

力扣题库第7题:接雨水


题目内容:

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

示例 :

输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 

答案:
# coding:utf-8
# 时间:2024/3/10 17:33
# Pythonit教程网(blog.pythonit.cn)
# Python全栈视频课件获取:www.dqu.cc
# 加速高防cdn:woaiyundun.cn
def trap(height):
    if not height:
        return 0

    left, right = 0, len(height) - 1
    left_max, right_max = height[left], height[right]
    water = 0

    while left < right:
        # 如果左边的高度小于右边的高度
        # 则更新左边最大高度,并计算当前位置能接的雨水量
        if height[left] < height[right]:
            if height[left] > left_max:
                left_max = height[left]
            else:
                water += left_max - height[left]
            left += 1
            # 如果右边的高度小于等于左边的高度
        # 则更新右边最大高度,并计算当前位置能接的雨水量
        else:
            if height[right] > right_max:
                right_max = height[right]
            else:
                water += right_max - height[right]
            right -= 1

    return water
height = [0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]
print(trap(height))  # 输出:6

相关文章:

  • 01_Maven
  • uniapp小程序获取位置权限(不允许拒绝)
  • 计算机网络 八股
  • 代码随想录训练营第41天 | 动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、LeetCode 416.分割等和子集
  • 【论文笔记】Language Models are Few-Shot Learners
  • 分库分表浅析原理
  • mysql和redis的区别
  • Python爬虫之爬取并下载哔哩哔哩视频
  • 剪枝例题一道
  • 10 | MySQL为什么有时候会选错索引?
  • 如何在一个pycharm项目中创建jupyter notebook文件,并切换到conda环境中
  • 数据结构之顺序表及其实现!
  • 存算一体成为突破算力瓶颈的关键技术?
  • SpringCloud-MQ消息队列
  • 从零开始手写RPC框架(4)
  • 【操作系统学习笔记】文件管理2.1
  • Git 开源的版本控制系统-06-share to github 如何把项目代码共享到 github
  • 设计模式 工厂模式
  • LeetCode904:水果成篮
  • 智能革新:2024年AI辅助研发的挑战、机遇与未来展望
  • 昆明阳宗海风景名胜区19口井违规抽取地热水,整改后用自来水代替温泉
  • 北约年度报告渲染所谓“中国核威胁”,国防部回应
  • “20后”比“60后”更容易遭遇极端气候事件
  • 黄晨光任中科院空间应用工程与技术中心党委书记、副主任
  • 公元1057年:千年龙虎榜到底有多厉害?
  • 中俄领导人将讨论从俄罗斯经蒙古至中国天然气管道项目?外交部回应