代码随想录算法训练营第五十八天| LeetCode739. 每日温度 496.下一个更大元素 I

739. 每日温度

题目:力扣

class Solution {
public:
    vector dailyTemperatures(vector& temperatures) {
        stack s;
        s.push(0);
        vector ans(temperatures.size(),0);
        for(int i = 1;i < temperatures.size(); ++i){
            while(!s.empty() && temperatures[i] > temperatures[s.top()]){
                ans[s.top()] = (i-s.top());
                s.pop();
            }
            s.push(i);
        }
        return ans;
    }
};

496.下一个更大元素 I

题目:力扣

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

总结

题型:单调栈

你可能感兴趣的:(代码随想录算法训练营,leetcode,算法,c++)