Maximum Width Ramp LeetCode solution in JavaScript
1var maxWidthRamp = function (nums) {2let stack = [],3ans = 0;4for (let i = 0; i < nums.length; i++) {5let index = lower_bound(stack, i);6ans = Math.max(ans, i - index);7if (!stack.length || nums[i] < nums[stack[stack.length - 1]]) stack.push(i);8}9return ans;1011function lower_bound(arr, index) {12if (!arr.length) return index;13let low = 0,14high = arr.length - 1;15while (low < high) {16let mid = Math.floor((low + high) / 2);17if (nums[arr[mid]] <= nums[index]) high = mid;18else low = mid + 1;19}20return nums[arr[low]] <= nums[index] ? arr[low] : index;21}22};