代码随想录算法训练营第60天|739. 每日温度、496.下一个更大元素 I

739. 每日温度

https://leetcode.cn/problems/daily-temperatures/

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

496.下一个更大元素 I

 https://leetcode.cn/problems/next-greater-element-i/

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

你可能感兴趣的:(算法)