题解 | #单调栈#
单调栈
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; } };