本文主要是介绍代码随想录35期Day59-JavaScript(day58休息),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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休息)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!