试题地址:https://leetcode-cn.com/problems/container-with-most-water/
试题思路:
1、暴力,时间太长,写起来也比较简单
2、贪心(个人感觉应该是),前后两个指针(i,j),同时移动,若height[i]>height[j],后指针前移(j--),保证此时的height[j]最大;height[i]<height[j]同理;
这样能够保证两边的边界都是较大的
试题代码:
package main import "fmt" func main() { height := []int{1, 8, 6, 2, 5, 4, 8, 3, 7} fmt.Println(maxArea(height)) } func maxArea(height []int) int { maxarea := 0 i := 0 j := len(height) - 1 for j > i { if maxarea < min(height[i], height[j])*(j-i) { maxarea = min(height[i], height[j]) * (j - i) } fmt.Println(maxarea) if height[i] > height[j] { j-- } else { i++ } } return maxarea } func min(x, y int) int { if x > y { return y } return x }
原文:https://www.cnblogs.com/ybf-yyj/p/12724882.html