Maximum Width Ramp LeetCode solution in C++
1class Solution {2public:3int maxWidthRamp(vector<int> &nums) {4int n = nums.size();5if (n == 2) {6if (nums[0] <= nums[1]) return 1;7return 0;8}9stack<int> st;10for (int i = 0; i < n; i++) {11if (st.empty() || nums[i] < nums[st.top()]) {12st.push(i);13} // maintaining a monotonic decreasing stack14}15int ramp = 0;16for (int i = n - 1; i >= 0; i--) {17while (!st.empty() && nums[i] >= nums[st.top()]) {18ramp = max(ramp, i - st.top());19st.pop();20}21}22return ramp;23}24};