Maximum Width Ramp LeetCode solution in C++

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

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0