lc-go/solutions/0/q42/solution.go
2026-01-07 18:04:39 +09:00

36 lines
505 B
Go

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