12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package main
- // 穷举
- func maxAreaOld(height []int) int {
- n := len(height)
- max := 0
- for left := 0; left < n-1; left++ {
- for right := 1; right < n; right++ {
- tmp := (right - left) * minInt(height[left], height[right])
- if tmp > max {
- max = tmp
- }
- }
- }
- return max
- }
- // DP?
- func maxArea(height []int) int {
- n := len(height)
- l, r := 0, n-1
- max := 0
- for l < r {
- hl, hr := height[l], height[r]
- tmp := (r - l) * minInt(hl, hr)
- if tmp > max {
- max = tmp
- }
- if hl < hr {
- for ; l < r && height[l] <= hl; l++ {
- }
- } else {
- for ; l < r && height[r] <= hr; r-- {
- }
- }
- }
- return max
- }
- /* func main() {
- arr := []int{1, 2, 4, 54, 6, 54}
- fmt.Println(maxArea(arr))
- } */
|