diff --git a/TwoPointers/jieyushui/main.go b/TwoPointers/jieyushui/main.go index 9df6745..d18cf72 100644 --- a/TwoPointers/jieyushui/main.go +++ b/TwoPointers/jieyushui/main.go @@ -8,24 +8,26 @@ func main() { } func trap(height []int) int { - leftMaxlist := make([]int, len(height)+1) - rightMaxlist := make([]int, len(height)+1) - minMax := make([]int, len(height)+1) - for i := 0; i < len(height)-1; i++ { - leftMaxlist[i+1] = max(height[i], leftMaxlist[i]) + leftP := 0 + rightP := 1 + result := 0 + midres := 0 + for { + if leftP > len(height)-1 || rightP > len(height)-1 { + break + } + if height[leftP] > height[rightP] { + midres += height[leftP] - height[rightP] + fmt.Println("result加上:", height[leftP]-height[rightP], "当前左指针:", leftP, "当前右指针:", rightP) + rightP++ + } else if height[leftP] <= height[rightP] && midres != 0 { + result += midres + leftP = rightP + rightP = leftP + 1 + } else { + leftP++ + rightP = leftP + 1 + } } - for i := len(height) - 1; i >= 0; i-- { - rightMaxlist[i] = max(height[i], rightMaxlist[i+1]) - } - fmt.Println(leftMaxlist) - fmt.Println(rightMaxlist) - for i := 0; i < len(minMax)-1; i++ { - minMax[i] = min(leftMaxlist[i], rightMaxlist[i]) - } - - for i := len(minMax) - 1; i >= 0; i-- { - - } - - return 0 + return result }