【LeetCode】496、下一个更大元素 I

一、题目

题目

二、思路

单调栈

单调递减栈(从栈底到栈顶方向递减) + 哈希表

三、编码

class Solution {
    
    
public:
    vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
    
    
        vector<int> ans(nums1.size());
        stack<int> st;
        unordered_map<int, int> mp;
        for (int i = nums2.size() -1; i >= 0; i--) {
    
    
            int num = nums2[i];
            while (!st.empty() && num > st.top()) {
    
    
                st.pop();
            }
            mp[num] = st.empty() ? -1 : st.top();
            st.push(num);
        }
        for (int i = 0; i < nums1.size(); i++) {
    
    
            ans[i] = mp[nums1[i]];
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/jiaoyangwm/article/details/127462178
今日推荐