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; } };