Problem: 42. 接雨水
思路
经典的单调栈,但是要找到栈顶元素左右第一个大于他的元素,因为我们使用单调栈,可以知道在单调栈中栈顶元素的前一个元素,就是左边第一个大于他的元素。
另外,if(height[i] == height[st.top()])
的情况可以先弹出,再加入。
我们计算面积是计算一个宽度,并不是高度,就像下面的箭头一样。
还有要注意的地方就是,在计算宽度的时候要弹出元素,不要忘记判空。
Code
1 | class Solution { |
Problem: 42. 接雨水
经典的单调栈,但是要找到栈顶元素左右第一个大于他的元素,因为我们使用单调栈,可以知道在单调栈中栈顶元素的前一个元素,就是左边第一个大于他的元素。
另外,if(height[i] == height[st.top()])
的情况可以先弹出,再加入。
我们计算面积是计算一个宽度,并不是高度,就像下面的箭头一样。
还有要注意的地方就是,在计算宽度的时候要弹出元素,不要忘记判空。
1 | class Solution { |