做淘宝客网站难吗,快三彩票网站开发,安康学院费用,做网站的劣势496.下一个更大元素II 这道题特殊的点在于它有点像环#xff0c;后面的元素可以再从前面的元素找#xff0c;我看了卡哥的视频#xff0c;卡哥是根据取模来取的#xff0c;但是他会多了没必要的赋值#xff0c;我还是按照我最初的想法写吧#xff0c;我是跟之前单调区间一…496.下一个更大元素II 这道题特殊的点在于它有点像环后面的元素可以再从前面的元素找我看了卡哥的视频卡哥是根据取模来取的但是他会多了没必要的赋值我还是按照我最初的想法写吧我是跟之前单调区间一样用数组来记录最大元素因为后面的元素可以再从前面的元素找所以我再加一次循环这次循环跟上一个循环的区别就在于没有了s.pop()因为这次循环是要查缺的所以就只需补上漏了的值就好。
https://leetcode.cn/problems/next-greater-element-ii/description/
class Solution {
public:vectorint nextGreaterElements(vectorint nums) {stackints;vectorintresult(nums.size(),-1);for(int i0;inums.size();i){while(!s.empty()nums[i]nums[s.top()]){result[s.top()]nums[i];s.pop();}s.push(i);}if(!s.empty())for(int i0;inums.size();i){while(!s.empty()nums[i]nums[s.top()]){result[s.top()]nums[i];s.pop();}}return result;}
};
42.接雨水 再一次感叹单调栈的神奇这道题用单调栈来做代码和之前的题相比只多了一点我们还是把单调栈设置成为从小到大的单调栈一旦height[i]大于栈顶元素就说明栈顶元素右边比它高的已经找到了但是求面积的话需要知道栈顶元素的左边比它高的元素这可怎么找呢关键就在这按照单调栈进栈的顺序比前面的元素小的会放进栈里所以此时栈里面在栈顶元素的下一个元素就是我们要找的栈顶元素的左边比它高的元素剩下的就是在左右两边的高的元素里面取一个较小的作为面积的高然后根据数组下标计算得到宽了。
https://leetcode.cn/problems/trapping-rain-water/submissions/512609053/
class Solution {
public:int trap(vectorint height) {int sum0;stackints;s.push(0);for(int i1;iheight.size();i){while(!s.empty()height[i]height[s.top()]){int mids.top();s.pop();if(!s.empty()){int highmin(height[s.top()],height[i])-height[mid];int widthi-s.top()-1;sumhigh*width;}}s.push(i);}return sum;}
};