代码随想录算法训练营第五十九天| LeetCode503.下一个更大元素II 42. 接雨水

503.下一个更大元素II

题目:力扣

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

42. 接雨水

题目:力扣

class Solution {
public:
    int trap(vector& height) {
        int result = 0;
        stack s;
        s.push(0);
        for(int i = 1;i < height.size(); ++i){
            while(!s.empty() && height[i] > height[s.top()]){
                int mid = s.top();
                s.pop();
                if(!s.empty()){
                     result += (min(height[i],height[s.top()]) - height[mid]) * (i  - s.top() - 1);
                }
            }
            s.push(i);
        }
        return result;
    }
};

总结

题型:

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