代码随想录第48天 | ● 739. 每日温度 ● 496.下一个更大元素 I

739. 每日温度

/**
 * @param {number[]} temperatures
 * @return {number[]}
 */
var dailyTemperatures = function(temperatures) {
   const n=temperatures.length
   const res=Array(n).fill(0)
   const stack=[]   // 递增栈:用于存储元素右面第一个比他大的元素下标
   stack.push(0)
   for(let i=0;i<n;i++){
       const top=stack[stack.length-1]
       
           while(stack.length && temperatures[i] > temperatures[stack[stack.length - 1]]){
               const top=stack.pop()
               res[top]=i-top
           }
       stack.push(i);
   }
   return res;
};

496.下一个更大元素 I

/**
 * @param {number[]} nums1
 * @param {number[]} nums2
 * @return {number[]}
 */
var nextGreaterElement = function(nums1, nums2) {
 let stack = [];
  let map = new Map();
  for (let i = 0; i < nums2.length; i++) {
    while (stack.length && nums2[i] > nums2[stack[stack.length - 1]]) {
      let index = stack.pop();
      map.set(nums2[index], nums2[i]);
    }
    stack.push(i);
  }

  let res = [];
  for (let j = 0; j < nums1.length; j++) {
    res[j] = map.get(nums1[j]) || -1;
  }

  return res;
};

思想

用set

你可能感兴趣的:(代码随想录,javascript,前端)