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