标签:右边 cur JavaScript height 问题 length 降水量 var stack
题目描述:
给定n个柱面的高度,表示降雨某地n块区域的海拔高度。
计算降雨之后该地最大储水面积。如果低于地平线,也就是小于0,则一定积水。
输入描述:
第一行输入整数n.(1<=n<=10000)
第二行输入n个高度整数h。(-10000<=h<=10000)
输出描述:
积水面积。
本题思路是,需要找出墙的左边和右边,当出现凹形,则会积水,所以一定要找到墙的左边和右边,如何找到墙的右边呢?
根据积水坑的形状,一定是凹型,所以墙的左边一定是非递增,右边一定是非递减。
所以需要一个栈来存储左边,然后遇到右边的墙后,开始出栈,出栈后计算宽度和高度,得出面积。
由于需要宽度计算,所以入栈的是高度数组下标。
function trap(height){
var cur = 0;
var n = height.length;
var stack=[];
stack.push(cur);
var result=0;
while(cur<n){
while(height[cur]>height[stack[stack.length-1]]&&stack.length!=0){
var top=stack.pop();
if(stack.length==0){
break;
}
var distance = cur - top;
var tempheight = Math.min(height[cur],height[stack[stack.length-1]]) - height[top];
result+=distance*tempheight;
}
stack.push(cur);
cur++;
}
return result;
}
标签:右边,cur,JavaScript,height,问题,length,降水量,var,stack 来源: https://blog.csdn.net/Damp_XUN/article/details/100624772
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。