本文最后更新于589 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
1.本题比上一个多一层壳是这个数组成环了,这样的话我今天学到了一个新的方式来处理这个处理环的问题就是取模,这样就可以保证下标不越界,我觉得单调栈这里的问题就是时刻记得栈里的存放的就是下标,然后其他的创建的容器都要记住他们是做什么的,怎么取下标或者怎么从一个容器取到另一个容器的联系也就是下标,都要清晰的记住,这样就可以清晰的处理下标的问题,头脑里记住单调栈的模型图,在脑子里模拟这一步在干什么就可以很容易的找到对应的操作,将应该存放的数值存放在相应的地方,我想多做几次就回有清晰的认知。
CPP
class Solution {
public:
vector<int> nextGreaterElements(vector<int>& nums) {
stack<int> st;
vector<int> res(nums.size(), -1);
st.push(0);
for(int i = 1; i < nums.size() * 2; i++){
if(nums[i % nums.size()] <= nums[st.top()]){
st.push(i % nums.size());
}else{
while(!st.empty() && nums[i % nums.size()] > nums[st.top()]){
res[st.top()] = nums[i % nums.size()];
st.pop();
}
st.push(i % nums.size());
}
}
return res;
}
};