class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums intvector
* @return intvector<vector<>>
*/
vector<vector<int> > foundMonotoneStack(vector<int>& nums) {
// write code here
int n = nums.size();
stack<int> leftStk;
vector<int> leftMin(n, -1);
for(int i = 0; i < n; i ++){
while(!leftStk.empty() && nums[leftStk.top()] >= nums[i]) leftStk.pop();
leftMin[i] = leftStk.empty() ? -1 : leftStk.top();
leftStk.push(i);
}
stack<int> rightStk;
vector<int> rightMin(n, -1);
for(int i = n - 1; i >= 0; i --){
while(!rightStk.empty() && nums[rightStk.top()] >= nums[i]) rightStk.pop();
rightMin[i] = rightStk.empty() ? -1 : rightStk.top();
rightStk.push(i);
}
vector<vector<int>> res(n);
for(int i = 0; i < n; i ++){
res[i] = {leftMin[i], rightMin[i]};
}
return res;
}
};