news 2026/9/3 18:27:17

双指针解接雨水

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
双指针解接雨水

问题

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 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 个单位的雨水(蓝色部分表示雨水)。 示例 2: 输入:height = [4,2,0,3,2,5] 输出:9

解法

class Solution: def trap(self, height: List[int]) -> int: """ 给定一个数组 height,每个元素代表一个柱子的高度。计算淋雨后能接多少水。 :param height: List[int] 每个柱子的高度 :return: int 能接的雨水总量 """ ans = 0 # 初始化雨水总量 left, right = 0, len(height) - 1 # 左右指针分别指向数组的两端 leftMax = 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 += 1 # 移动左指针 else: # 如果右边的柱子高度小于左边,则雨水量由右边决定 ans += rightMax - height[right] right -= 1 # 移动右指针 return ans # 返回雨水总量

算法复杂度

  • 时间复杂度为O(N),其中 N 是height的长度,因为每个元素最多被访问两次(一次在左指针移动时,一次在右指针移动时)。
  • 空间复杂度为O(1),因为仅使用了有限的额外空间(几个指针变量)。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 6:33:17

直接上结论:千笔·专业学术智能体,研究生论文写作神器

你是否曾为论文选题发愁&#xff0c;反复修改却总对表达不满意&#xff1f;是否在文献检索中耗费大量时间&#xff0c;却依然找不到合适的资料&#xff1f;又或者&#xff0c;在查重和格式调整上反复折腾&#xff0c;身心俱疲&#xff1f;论文写作的每一步都充满挑战&#xff0…

作者头像 李华
网站建设 2026/8/30 6:45:08

创客匠人IP价值重塑:从流量焦虑到信任密度的知识变现新思维

信任稀缺时代的知识经济新规则2026年&#xff0c;当AI生成内容充斥互联网&#xff0c;一个悖论正在形成&#xff1a;信息前所未有的丰富&#xff0c;有价值的知识却越来越稀缺。在这个背景下&#xff0c;创客匠人面临着前所未有的挑战与机遇。某位年营收过亿的知识付费平台创始…

作者头像 李华
网站建设 2026/9/3 0:14:54

业绩超预期背后:MiniMax正从大模型公司跃迁为AI平台公司

全球领先的通用人工智能科技公司MiniMax&#xff08;股票代码&#xff1a;00100&#xff09;今日发布截至2025年12月31日止全年业绩&#xff0c;报告期内&#xff0c;公司总收入7903.8万美元&#xff0c;同比增长158.9%&#xff0c;超过70%收入来自国际市场&#xff1b;毛利为2…

作者头像 李华