2022-3-27 高频题

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

 

示例 1:

 1 class Solution {
 2     public int maxArea(int[] height) {
 3         // i , j j-i * min(h[i],h[j])
 4         int max=0;
 5         int l=0,r=height.length-1;
 6         while (l<r) {
 7             max=Math.max(max,(r-l)*Math.min(height[l],height[r]));
 8             if (height[l]<height[r]) l++;
 9             else r--;
10         }
11         return  max;
12     }
13 }

思路:双指针,总是先移动较小的那边,数学可以严格证明正确。

posted on 2022-03-27 15:39  阿ming  阅读(31)  评论(0)    收藏  举报

导航