接雨水题解half
This commit is contained in:
@@ -8,24 +8,26 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func trap(height []int) int {
|
func trap(height []int) int {
|
||||||
leftMaxlist := make([]int, len(height)+1)
|
leftP := 0
|
||||||
rightMaxlist := make([]int, len(height)+1)
|
rightP := 1
|
||||||
minMax := make([]int, len(height)+1)
|
result := 0
|
||||||
for i := 0; i < len(height)-1; i++ {
|
midres := 0
|
||||||
leftMaxlist[i+1] = max(height[i], leftMaxlist[i])
|
for {
|
||||||
|
if leftP > len(height)-1 || rightP > len(height)-1 {
|
||||||
|
break
|
||||||
}
|
}
|
||||||
for i := len(height) - 1; i >= 0; i-- {
|
if height[leftP] > height[rightP] {
|
||||||
rightMaxlist[i] = max(height[i], rightMaxlist[i+1])
|
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
|
||||||
}
|
}
|
||||||
fmt.Println(leftMaxlist)
|
|
||||||
fmt.Println(rightMaxlist)
|
|
||||||
for i := 0; i < len(minMax)-1; i++ {
|
|
||||||
minMax[i] = min(leftMaxlist[i], rightMaxlist[i])
|
|
||||||
}
|
}
|
||||||
|
return result
|
||||||
for i := len(minMax) - 1; i >= 0; i-- {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user