503.下一个更大元素II
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
vector<int> result(nums.size(), -1);
stack<int> s;
s.push(0);
for(int i=1; i<nums.size()*2; i++){
while(!s.empty() && nums[i%nums.size()]>nums[s.top()]){
result[s.top()] = nums[i%nums.size()];
s.pop();
}
s.push(i%nums.size());
}
return result;
}
};
参考文章:代码随想录- 503.下一个更大元素II
42. 接雨水
class Solution {
public:
int trap(vector<int>& height) {
stack<int> s;
int result = 0;
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()){
int h = min(height[i], height[s.top()])-height[mid];
result += h*(i-s.top()-1);
}
}
s.push(i);
}
return result;
}
};
参考文章:代码随想录- 42. 接雨水