[每日一题] (Trapping Rain Water II)
Trapping Rain Water II
Given n x m non-negative integers representing an elevation map 2d where the area of each cell is 1 x 1, compute how much water it is able to trap after raining.
Example
Given 5*4 matrix
[12,13,0,12]
[13,4,13,12]
[13,8,10,12]
[12,13,12,12]
[13,13,13,13]
return 14.
解题思路
使用最小堆
1.对矩形的四周建堆
2.对于堆中每一元素,查探其四邻域中未查探的位置
3.如果h小于当前值,则更新水池容量,并将该位置加入堆中
4.如果h大于等于当前值,则直接加入堆中
最小堆中每次取的元素为当前水池中最短边的长度,如果每次寻找时发现了比最短边低的位置,则可以将水导入(更新水池容量),否则直接将该位置加入到水池中形成新的边缘
笔记
最小堆的题目的特征(不断找最小),对Python中的最小堆的使用
Python:
|
|