単調なスタックを使用して、配列の次に大きい要素の問題を解決します

ここに画像の説明を挿入

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;


    }
}

おすすめ

転載: blog.csdn.net/changbaishannefu/article/details/115143898