题解 | #单调栈#
单调栈
http://www.nowcoder.com/practice/ae25fb47d34144a08a0f8ff67e8e7fb5
class Solution {
public:
vector<vector<int> > foundMonotoneStack(vector<int>& nums) {
// write code here
vector<vector<int>>res(nums.size(),vector<int>(2));
stack<int>l,r;
for(int i=0;i<nums.size();i++)
{
int t=nums[i];
if(l.empty())
{
res[i][0]=-1;
}else if(nums[l.top()]<t){
res[i][0]=l.top();
}
else if(nums[l.top()]>=t){
while (!l.empty() && nums[l.top()]>=t){
l.pop();
}
res[i][0]=(l.empty()?-1:l.top());
}
l.push(i);
}
for(int j=nums.size()-1;j>=0;j--)
{
int t=nums[j];
if(r.empty())
{
res[j][1]=-1;
}else if(nums[r.top()]<t){
res[j][1]=r.top();
}
else if(nums[r.top()]>=t){
while (!r.empty() && nums[r.top()]>=t){
r.pop();
}
res[j][1]=(r.empty()?-1:r.top());
}
r.push(j);
}
return res;
}
};