Stack先进后出应用如果数据存储的顺序与使用的顺序相反,那么最后保存的数据会被最先使用,具有“后进先出”的特点out”,所以可以考虑将数据存入栈中。后缀表达式主题:后缀表达式是一个算术表达式,其运算符跟在操作数之后。输入一个字符串数组表示的后缀表达式,请输出后缀表达式的计算结果。假定输入必须是有效的后缀表达式。例如,后缀表达式["2","1","3","","+"]对应的算术表达式为“2+13”,则输出其计算结果5。/***@param{string[]}tokens*@return{number}*/varevalRPN=function(tokens){letstack=[]for(consttokenoftokens){switch(token){案例“+”:case"-":case"*":case"/":letnum1=stack.pop();让num2=stack.pop();stack.push(calculate(num2,num1,token))中断;默认:stack.push(Number(token))}}returnstack.pop()};varcalculate=function(num1,num2,operator){switch(operator){case"+":returnnum1+num2;case"-":返回num1-num2;case"*":返回num1*num2;case"/":返回num1/num2>0?Math.floor(num1/num2):Math.ceil(num1/num2);}}smallPlanetarycollisiontopic:输入一个代表小行星的数组,数组中每个数字的绝对值代表小行星的大小,数字的符号代表小行星运动的方向,正号表示向右飞,负号表示向左飞行。如果两颗小行星相撞,较小的小行星将爆炸并消失,而较大的小行星不受影响。如果两颗相撞的小行星大小相同,它们都会爆炸并消失。朝同一方向行进的小行星永远不会相撞。找到最后剩下的小行星。比如有6颗小行星[4,5,-6,4,8,-5],如图6.2(箭头表示飞行方向),它们相撞后,最终有3颗小行星[-6,4,8]。varasteroidCollision=function(anteroids){conststack=[];for(leti=0;i0&&stack[stack.length-1]<-anteroids[i]){堆栈.pop()}if(stack.length&&anteroids[i]<0&&stack[stack.length-1]==-anteroids[i]){stack.pop()}elseif(!stack.length||anteroids[i]>0||stack[stack.length-1]<0){stack.push(anteroids[i])}}returnstack;}every每日温度主题:输入一个数组,其中每个数字是某一天的温度。请计算在高温出现之前您每天需要等待多少天。例如,如果输入数组为[35,31,33,36,34],则输出为[3,1,1,0,0]。由于第1天的温度是35℃,3天之后才出现36℃的高温,所以对应的输出为3。第4天的温度是36℃,没有出现更高的温度之后,其对应的输出为0。其他等等。暴力法//写错了,变成最高温度vardailyTemperatures(temperatures){letresult=[]for(leti=0;imax){count=j-i}max=Math.max(max,温度[j]-temperatures[i])}result.push(count)}returnresult;}stack/***@param{number[]}温度*@return{number[]}*/vardailyTemperatures=function(temperatures){常量结果=新数组(温度。长度)。fill(0)conststack=[]for(leti=0;itemperatures[stack[stack.length-1]]){让prev=stack.pop();结果[prev]=i-prev}stack.push(i);}返回结果;};假设输入数组的长度为n。上面的代码虽然有嵌套的双循环,但是它的时间复杂度是O(n),因为数组中的每个温度都被push和pop一次。该解决方案的空间复杂度也是O(n)。直方图最大矩形面积的直方图是由排列在同一基线上的相邻列组成的图形。输入一个非负数数组,数组中的数字是直方图中条形的高度。找出直方图中最大矩形的面积。假设直方图中条形的宽度为1,例如输入数组[3,2,5,4,6,1,4,2],其对应的直方图如图6.3所示,最大的矩形区域直方图中的为12,如阴影部分的单调堆叠法矩阵中的最大矩形请在由0和1组成的矩阵中找出只包含1的最大矩形并输出其面积。例如图6.6的矩阵中,只有1的最大矩阵用阴影表示,其面积为6。总结