代码随想录算法训练营Day60|单调栈01

代码随想录算法训练营Day60|单调栈01


文章目录

  • 代码随想录算法训练营Day60|单调栈01
  • 一、739. 每日温度
  • 二、496.下一个更大元素 I


一、739. 每日温度

class Solution {
    public int[] dailyTemperatures(int[] temperatures) {
        //单调栈
        int lens=temperatures.length;
        int result[]=new int[lens];

        Deque<Integer> stack=new LinkedList<>();
        stack.push(0);
        for(int i=0;i<lens;i++){
            if(temperatures[i]<=temperatures[stack.peek()]){
                stack.push(i);
            }
            else{
while(!stack.isEmpty()&&temperatures[i]>temperatures[stack.peek()]){
                    result[stack.peek()]=i-stack.peek();
                    stack.pop();
                }
                stack.push(i);
            }
        }
      return  result;
    }
}

二、496.下一个更大元素 I

class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        Stack<Integer> temp = new Stack<>();
        int[] res = new int[nums1.length];
        Arrays.fill(res,-1);
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        for (int i = 0 ; i< nums1.length ; i++){
            hashMap.put(nums1[i],i);
        }
        temp.add(0);
        for (int i = 1; i < nums2.length; i++) {
            if (nums2[i] <= nums2[temp.peek()]) {
                temp.add(i);
            } else {
                while (!temp.isEmpty() && nums2[temp.peek()] < nums2[i]) {
                    if (hashMap.containsKey(nums2[temp.peek()])){
                        Integer index = hashMap.get(nums2[temp.peek()]);
                        res[index] = nums2[i];
                    }
                    temp.pop();
                }
                temp.add(i);
            }
        }

        return res;
    }
}

你可能感兴趣的:(代码随想录打卡,算法,java,数据结构)