• 欢迎光临~

[leetcode 496. 下一个更大元素 I] 单调栈

开发技术 开发技术 2022-05-23 次浏览

单调栈的写法:

 

 

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        int len = nums1.length;
        int[] ans = new int[len];
        Map<Integer,Integer> map = new HashMap<>();
        Deque<Integer> stack = new ArrayDeque<>();
        for (int i = nums2.length-1; i >=0 ; i--) {
            int num = nums2[i];


            while(!stack.isEmpty() && stack.peek() <= num){
                stack.pop();
            }
            if(stack.isEmpty()){
                map.put(num,-1);
            }else{
                map.put(num,stack.peek());
            }

            stack.push(num);
        }
        for (int i = 0; i < nums1.length; i++) {
            ans[i] = map.get(nums1[i]);
        }
        return ans;
    }
}

 

程序员灯塔
转载请注明原文链接:[leetcode 496. 下一个更大元素 I] 单调栈
喜欢 (0)