2023.8.28
文章来源:https://www.toymoban.com/news/detail-680540.html
本题类似于下一个更大元素I ,区别就是数组变成循环的了,可以将nums数组先double一下,如:{1,2,1}变成{1,2,1,1,2,1},再用单调栈的方法求出ans数组,最后将ans数组截一半即可。 代码如下:文章来源地址https://www.toymoban.com/news/detail-680540.html
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
vector<int> new_nums(nums.begin(),nums.end());
nums.insert(nums.end(),new_nums.begin(),new_nums.end());
vector<int> ans(nums.size());
stack<int> stk;
for(int i=nums.size()-1; i>=0; i--)
{
while(!stk.empty() && nums[i]>=stk.top()) stk.pop();
ans[i] = stk.empty()? -1 : stk.top();
stk.push(nums[i]);
}
ans.resize(ans.size()/2);
return ans;
}
};
到了这里,关于leetcode 503. 下一个更大元素 II的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!