题目类型: 双指针 + 贪心:
算是复习,
贪心策略:
Q: 双指针为什么不是都从头开始, 而是一头一尾往中间走?
A: 尝试证明, 却不会! 但是可以尝试, 双指针也就两种, 不是1就是2.
Q: (变量意义见下面code)为什么height[start] < height[end]时, start ++
A: 右指针移动不会让面积变得更大, 移动左指针可能让面积变得更大.
func maxArea(height []int) int {
max, start, end := 0, 0, len(height)-1
for start < end {
width := end - start
high := 0
if height[start] < height[end] {
high = height[start]
start++
} else {
high = height[end]
end--
}
temp := width * high
if temp > max {
max = temp
}
}
return max
}