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