📑 题目:11. 盛最多水的容器

🚀 本题 LeetCode 传送门

题目大意

给出一个非负整数数组 a1,a2,a3,…… an,每个整数标识一个竖立在坐标轴 x 位置的一堵高度为 ai 的墙,选择两堵墙,和 x 轴构成的容器可以容纳最多的水。

解题思路

这一题也是对撞指针的思路。首尾分别 2 个指针,每次移动以后都分别判断长宽的乘积是否最大。

代码

  1. package leetcode
  2. func maxArea(height []int) int {
  3. max, start, end := 0, 0, len(height)-1
  4. for start < end {
  5. width := end - start
  6. high := 0
  7. if height[start] < height[end] {
  8. high = height[start]
  9. start++
  10. } else {
  11. high = height[end]
  12. end--
  13. }
  14. temp := width * high
  15. if temp > max {
  16. max = temp
  17. }
  18. }
  19. return max
  20. }