739. 每日温度
解题思路
代码实现
var dailyTemperatures = function(temperatures) {
var stack = new Array();
var result = new Array(temperatures.length).fill(0);
stack.push(0);
for(let i=1; i<temperatures.length; i++){
var idx = stack[stack.length-1];
if(temperatures[i] <= temperatures[idx]){
stack.push(i);
}else{
while(temperatures[i] > temperatures[idx]){
result[idx] = i-idx;
stack.pop();
if(stack.length>0){
idx = stack[stack.length-1];
}else{
break;
}
}
stack.push(i);
}
}
return result;
};
496.下一个更大元素 I
解题思路
代码实现
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var nextGreaterElement = function(nums1, nums2) {
var result = new Array(nums1.length).fill(-1);
var stack = new Array();
stack.push(0);
var map = new Map();
for(let i=0;i<nums1.length;i++){
map.set(nums1[i],i);
}
for(let i=1;i<nums2.length;i++){
var top = stack[stack.length-1];
if(nums2[i] <= nums2[top]){
stack.push(i);
}else{
while(nums2[i] > nums2[top]){
if(map.has(nums2[top])){
var idx = map.get(nums2[top]);
result[idx] = nums2[i];
}
stack.pop();
top = stack[stack.length-1];
}
stack.push(i);
}
}
return result;
};
503.下一个更大元素II
解题思路
代码实现
var nextGreaterElements = function(nums) {
var result = new Array(nums.length).fill(-1);
var stack = new Array();
stack.push(0);
for(let i=1;i< 2 * nums.length;i++){
var top = stack[stack.length-1];
if(nums[i%nums.length] <= nums[top]){
stack.push(i%nums.length)
}else{
while(nums[i%nums.length] > nums[top]){
result[top] = nums[i%nums.length];
stack.pop();
top = stack[stack.length-1];
}
stack.push(i%nums.length);
}
}
return result;
};