47
47
首先要明确,要按照行来计算,还是按照列来计算。
48
48
49
49
按照行来计算如图:
50
- ![ 42.接雨水2] ( https://code-thinking-1253855093. file.myqcloud .com/pics/20210402091118927.png )
50
+ ![ 42.接雨水2] ( https://file.kamacoder .com/pics/20210402091118927.png )
51
51
52
52
按照列来计算如图:
53
- ![ 42.接雨水1] ( https://code-thinking-1253855093. file.myqcloud .com/pics/20210402091208445.png )
53
+ ![ 42.接雨水1] ( https://file.kamacoder .com/pics/20210402091208445.png )
54
54
55
55
一些同学在实现的时候,很容易一会按照行来计算一会按照列来计算,这样就会越写越乱。
56
56
62
62
63
63
这句话可以有点绕,来举一个理解,例如求列4的雨水高度,如图:
64
64
65
- ![ 42.接雨水3] ( https://code-thinking-1253855093. file.myqcloud .com/pics/20210223092732301.png )
65
+ ![ 42.接雨水3] ( https://file.kamacoder .com/pics/20210223092732301.png )
66
66
67
67
列4 左侧最高的柱子是列3,高度为2(以下用lHeight表示)。
68
68
@@ -201,7 +201,7 @@ public:
201
201
202
202
1 . 首先单调栈是按照行方向来计算雨水,如图:
203
203
204
- ![ 42.接雨水2] ( https://code-thinking-1253855093. file.myqcloud .com/pics/20210223092629946.png )
204
+ ![ 42.接雨水2] ( https://file.kamacoder .com/pics/20210223092629946.png )
205
205
206
206
知道这一点,后面的就可以理解了。
207
207
@@ -215,7 +215,7 @@ public:
215
215
216
216
如图:
217
217
218
- ![ 42.接雨水4] ( https://code-thinking-1253855093. file.myqcloud .com/pics/2021022309321229.png )
218
+ ![ 42.接雨水4] ( https://file.kamacoder .com/pics/2021022309321229.png )
219
219
220
220
关于单调栈的顺序给大家一个总结: [ 739. 每日温度] ( https://programmercarl.com/0739.每日温度.html ) 中求一个元素右边第一个更大元素,单调栈就是递增的,[ 84.柱状图中最大的矩形] ( https://programmercarl.com/0084.柱状图中最大的矩形.html ) 求一个元素右边第一个更小元素,单调栈就是递减的。
221
221
@@ -229,7 +229,7 @@ public:
229
229
230
230
如图所示:
231
231
232
- ![ 42.接雨水5] ( https://code-thinking-1253855093. file.myqcloud .com/pics/20210223094619398.png )
232
+ ![ 42.接雨水5] ( https://file.kamacoder .com/pics/20210223094619398.png )
233
233
234
234
4 . 栈里要保存什么数值
235
235
@@ -284,7 +284,7 @@ if (height[i] == height[st.top()]) { // 例如 5 5 1 7 这种情况
284
284
285
285
如果当前遍历的元素(柱子)高度大于栈顶元素的高度,此时就出现凹槽了,如图所示:
286
286
287
- ![ 42.接雨水4] ( https://code-thinking-1253855093. file.myqcloud .com/pics/2021022309321229-20230310123027977.png )
287
+ ![ 42.接雨水4] ( https://file.kamacoder .com/pics/2021022309321229-20230310123027977.png )
288
288
289
289
取栈顶元素,将栈顶元素弹出,这个就是凹槽的底部,也就是中间位置,下标记为mid,对应的高度为height[ mid] (就是图中的高度1)。
290
290
0 commit comments