image.png

分析:

一、双指针法

  1. 先确定容器面积S最大的长,就是数组的头尾两个数L1和R1(确定两个指针),宽是两个数中的更小值。
  2. 如果我们移动指针,那么S的长必定减小,我们想让面积更大,就只能找到更长的宽。
  3. 因为S的宽是两个数L1和R1的更小值,所以我们就比较,谁更小就移动谁的指针。直到指针L=R。
  1. let height = [1, 8, 6, 2, 5, 4, 8, 3, 7];
  2. var isThree = function (height) {
  3. let L = 0, R = height.length - 1, max = 0
  4. while (L < R) {
  5. let s = Math.min(height[L], height[R]) * (R - L)
  6. if (s > max) max = s
  7. if (height[L] > height[R]) {
  8. R--;
  9. } else {
  10. L++;
  11. }
  12. }
  13. return max
  14. }
  15. console.log(isThree(height));