php算法——接水滴
入职半年,还徘徊在无尽的增删改查和数据优化中的新手PHP程序员,最近被前端小哥带到进了算法的坑,做了很多算法题。
这题来自领扣网,比较有意思。
给定一个m x n的矩阵,其中的值均为正整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。
说明:
m 和 n 都是小于110的整数。每一个单位的高度都大于0 且小于 20000。
示例:
给出如下 3x6 的高度图:
[
[1,4,3,1,3,2],
[3,2,1,3,2,4],
[2,3,3,2,3,1]
]
返回 4。
如上图所示,这是下雨前的高度图[[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]] 的状态。
下雨后,雨水将会被存储在这些方块中。总的接雨水量是4。
我的思路是:
能接水的体积是每层空缺的体积,但是在空缺的体积中,有一部分是带有缺口的。所以具体思路:
1.分层计算每层空缺体积
2.获取每层缺口体积
3.每层积水体积 = 空缺体积-缺口体积
4.累加每层积水体积
不知道有没有更好的思路。