diff --git a/go/maximum-width-ramp.go b/go/maximum-width-ramp.go new file mode 100644 index 0000000..df6d797 --- /dev/null +++ b/go/maximum-width-ramp.go @@ -0,0 +1,21 @@ +package main + +func maxWidthRamp(nums []int) int { + st := make([]int, 0) + + for i, x := range nums { + if len(st) == 0 || nums[st[len(st)-1]] > x { + st = append(st, i) + } + } + + widest := 0 + for j := len(nums) - 1; j >= 0; j-- { + for len(st) > 0 && nums[st[len(st)-1]] <= nums[j] { + widest = max(widest, j-st[len(st)-1]) + st = st[:len(st)-1] + } + } + + return widest +}