lc-go/solutions/0/q42/solution.go

37 lines
597 B
Go

// Package q42 implements a solution for https://leetcode.com/problems/trapping-rain-water/
package q42
func trap(height []int) int {
water := 0
mid := 0
// From left
maxHeight, stash := 0, 0
for i, h := range height {
if h >= maxHeight {
maxHeight = h
water += stash
stash = 0
mid = i
} else {
stash += maxHeight - h
}
}
// From right
maxHeight, stash = 0, 0
for i := len(height) - 1; i >= mid; i-- {
h := height[i]
if h >= maxHeight {
maxHeight = h
water += stash
stash = 0
} else {
stash += maxHeight - h
}
}
return water
}
var _ = trap