Day54题目
### LeetCode739每日温度
核心思想:今天主要是学会单调栈的使用.找到比元素更大的下一个元素,如果比栈顶元素小就入栈,否则就出栈顶元素,当前元素就是比栈顶元素大的"下一个更大的元素".
java
/**
* @param {number[]} temperatures
* @return {number[]}
*/
var dailyTemperatures = function(temperatures) {
// 单调栈存放下标
var stack = []
var answers = new Array(temperatures.length).fill(0)
stack.push(0)
for(var i = 1 ; i < temperatures.length ; i ++ ){
// js没有peek,只能使用数组类似的下标访问最后一个元素
while(temperatures[stack[stack.length-1]] < temperatures[i]){
var index = stack.pop();
answers[index] = i - index;
}
stack.push(i);
}
return answers;
};
LeetCode496下一个更大元素
核心思想:使用单调栈存储元素的值就行
java
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var nextGreaterElement = function(nums1, nums2) {
var answers = [];
var stack = []
var tem = [];
stack.push(nums2[0])
for(let i = 0 ; i < nums2.length ; i ++){
while(stack[stack.length-1] < nums2[i]){
tem[stack.pop()] = nums2[i];
}
stack.push(nums2[i]);
}
for(let i = 0 ; i < nums1.length ; i ++){
if(!tem[nums1[i]]){
answers.push(-1)
}else{
answers.push(tem[nums1[i]]);
}
}
return answers;
};