题解 | #接雨水问题#
接雨水问题
https://www.nowcoder.com/practice/31c1aed01b394f0b8b7734de0324e00f
package main func maxWater( arr []int ) int64 { // write code here // 使用双指针分别标记当前左右侧木板的高度 // 如果左侧木板小于右侧木板,那么对应桶的容量不会超过左侧木板高度 n, ans := len(arr), 0 left, right, leftMax, rightMax := 0, n-1, arr[0], arr[n-1] for left < right { if leftMax < rightMax { ans += leftMax - arr[left] left++ leftMax = max(leftMax, arr[left]) } else { ans += rightMax - arr[right] right-- rightMax = max(rightMax, arr[right]) } } return int64(ans) } func max(a, b int) int { if a < b { return b }; return a } func min(a, b int) int { if a < b { return a }; return b }