理解题意:一个数组i,a[i]形成一个高度,找到两个高度之间能装最多水的面积。
思路:
- 从两边向中间找(不考虑高度的情况下,长度最大)
- 从比较小的开始向中间找比他大的(比他小的容积不可能更大)
func maxArea(height [] int) int {
length := len(height)
i := 0
j := length - 1
lh := height[0]
rh := height[length - 1]
max := 0
for i < j {
tmp := minInt(lh,rh) * (j - i)
if tmp > max {
max = tmp
}
//右边大
if lh < rh {
for i < j && height[i] <= lh {
i++
}
fmt.Println("1----",i,j)
if height[i] >= lh {
lh = height[i];
}
}else{
for i < j && height[j] <= rh {
j--
}
fmt.Println("2----",i,j)
if height[j] > rh {
rh = height[j];
}
}
}
return max;
}
func minInt (int1 int , int2 int) int {
if int1 > int2 {
return int2
}else{
return int1
}
}