Use una pila monótona para resolver el problema del siguiente elemento más grande de la matriz

Inserte la descripción de la imagen aquí

class Solution {
    
    
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
    
    
        if(nums2.length==0) return null;
        HashMap<Integer, Integer> map = new HashMap<>();
        Stack<Integer> stack = new Stack<>();
        stack.push(nums2[0]);
        int i=1;
        while(i<nums2.length){
    
    
            
            while(!stack.empty()&&nums2[i]>stack.peek()) {
    
    
                 map.put(stack.peek(),nums2[i]);
                 stack.pop();
            }
            stack.push(nums2[i++]);
        }
        while(!stack.empty()){
    
    
            map.put(stack.pop(),-1);
        }

       for(int j=0;j<nums1.length;j++){
    
    
           nums1[j]=map.get(nums1[j]);
       }
       return nums1;


    }
}

Supongo que te gusta

Origin blog.csdn.net/changbaishannefu/article/details/115143898
Recomendado
Clasificación