网站建设合同标的,绍兴模板建站代理,淮安做网站.哪家网络公司好?,帝国cms手机网站给定 n 个非负整数表示每个宽度为 1 的柱子的高度图#xff0c;计算按此排列的柱子#xff0c;下雨之后能接多少雨水。 输入#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出#xff1a;6 解释#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图#x…给定 n 个非负整数表示每个宽度为 1 的柱子的高度图计算按此排列的柱子下雨之后能接多少雨水。 输入height [0,1,0,2,1,0,1,3,2,1,2,1] 输出6 解释上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图在这种情况下可以接 6 个单位的雨水蓝色部分表示雨水。 示例 2
输入height [4,2,0,3,2,5] 输出9
提示
n height.length 1 n 2 * 104 0 height[i] 105 单调栈
class Solution {
public:int trap(vectorint height) {stackint stk;int res 0;for(int i 0; i height.size(); i ) {int last 0;while(stk.size() height[stk.top()] height[i]) {res (height[stk.top()] - last) * (i - stk.top() - 1);last height[stk.top()];stk.pop();}if(stk.size()) res (height[i] - last) * (i - stk.top() - 1);stk.push(i);}return res;}
};双指针
class Solution {
public:int trap(vectorint height) {int res 0;int l 0, r height.size() - 1;int lmax 0, rmax 0;while(l r) {lmax max(lmax, height[l]);rmax max(rmax, height[r]);if(height[l] height[r]) {res lmax - height[l];l ;} else {res rmax - height[r];r --;}}return res;}
};