下一個更大元素 I

下一個更大元素 I

class Solution {
    public int[] nextGreaterElement(int[] nums1, int[] nums2) {
        //x 在 nums2 中對應(yīng)位置 右側(cè) 的 第一個 比 x 大的元素
        int[] res = new int[nums1.length];
        Arrays.fill(res,-1);
        Deque<Integer> stack = new ArrayDeque<>();
        Map<Integer,Integer> map = new HashMap<>();

        for(int i = 0;i < nums2.length;i++){
            //先處理另一個棧,按單調(diào)棧處理法,保存到map,通過元素值與大于的元素值進(jìn)行映射
            while(!stack.isEmpty()&&nums2[i] > nums2[stack.peek()]){
                int number = nums2[stack.pop()];
                map.put(number,nums2[i]);
            }
            stack.push(i);
        }

        for(int i = 0; i < nums1.length;i++){
            if(map.containsKey(nums1[i])){
                res[i] = map.get(nums1[i]);
            }
        }
        return res;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容