image.png

思路

双指针

1.从两边收缩计算,每次循环取左右指针相对小的一边然后去乘两个指针之间的距离。
2.通过一个变量res记录每次计算的值,每次循环去和第一步中计算得值比较,取大值。
3.循环中比较左右指针对应数组中对应值
arr[left]<arr[right] left++;
arr[left]>=arr[right] right—;

题解

  1. function maxArea(height: number[]): number {
  2. let left: number = 0;
  3. let right: number = height.length - 1;
  4. let count: number = right;
  5. let res: number = 0;
  6. while (left < right) {
  7. const sum = Math.min(height[left], height[right]) * count;
  8. res = Math.max(sum, res);
  9. if (height[left] < height[right]) {
  10. left++;
  11. } else {
  12. right--;
  13. }
  14. count--;
  15. }
  16. return res;
  17. };