当前位置: 首页> 教育> 大学 > 代码随想录35期Day59-JavaScript(day58休息)

代码随想录35期Day59-JavaScript(day58休息)

时间:2025/7/11 18:13:01来源:https://blog.csdn.net/github_72392797/article/details/139417859 浏览次数:0次

Day59题目

LeetCode503下一个更大元素

核心思想:和之前的下一个更高温度差不多,使用单调栈,只不过这个需要你循环查找,可以通过遍历两次数组实现

/*** @param {number[]} nums* @return {number[]}*/
var nextGreaterElements = function(nums) {var len = nums.lengthvar res = new Array(len).fill(-1)var stack = []// 这里遍历2*len次for(let i = 0 ; i < 2* len ;  i ++){// 下面做判断都需要给i对len取余while(stack.length > 0 && nums[stack[stack.length-1]] < nums[i%len]){let index = stack.pop()res[index] = nums[i%len]}    stack.push(i%len)}return res;
};

LeetCode42接雨水

核心思想:高频题目,使用单调栈能够得到当前元素的后边第一个比他大的元素,和左边第一个比他大的元素(就是栈中的下一个),然后计算即可.使用单调栈是横向计算面积的

/*** @param {number[]} height* @return {number}*/
var trap = function(height) {var stack = []var res = 0;for(let i =  0  ; i  < height.length ; i ++){while(stack.length  > 0 &&  height[stack[stack.length-1]]  < height[i]){let index = stack.pop();if(stack.length === 0 ) break;let h = Math.min(height[i],height[stack[stack.length-1]] ) - height[index];let w = i - stack[stack.length-1] - 1;let square = h*w;res = res + square;}stack.push(i);}return res;
};
关键字:代码随想录35期Day59-JavaScript(day58休息)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: