0%

leetcode.407. 接雨水 II

问题描述

给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。

BFS搜索+最小堆

  • 1.maxHeightMap 维护矩阵maxHeightMap,maxHeightMap[i][j] 代表 (i,j) 格子,水位可以达到的最大高度
  • 2.初始化maxHeightMap[i][j]等于2000
  • 3.将矩阵各个边界放入最小堆
  • 4.循环从堆中拿出堆顶元素,并Pop,更新堆顶元素附近的格子,如果附近格子的maxHeightMap大于堆顶元素,赋值maxHeightMap为堆顶元素的值,并将此格子入堆
  • 5.循环直到堆为空
  • 6.根据 maxHeightMap - heightMap,算出可以积多少水

时间复杂度$O(n^2)$

MinHeap.h
trapRainWater_1.cpp