1.先仔细阅读 题目 和 示例
2.看标签
双指针常见的有快慢指针,头尾指针。而题目要解决的是找到容纳最多水的容器,而头尾指针就可以派上用场了,即头和尾构成一个容器。
3.正文:
寻找更高的高度的同时,还要注意容器的宽度,宽度也是决定容积最大的因素之一。
- 上代码
class Solution {
public int maxArea(int[] height) {
//先定义“头尾指针” 和 返回值
int head = 0,tail = height.length-1,ans = 0;
//当两个指针相遇时,结束循环
while(head < tail){
//存储每一次遍历的容积(用最低的高度 乘以 宽度)
int tmp = Math.min(height[head],height[tail]) * (tail-head);
//取最大值
ans = Math.max(ans,tmp);
//每一次比较“头”和“尾”的高度,若“头”比“尾”低,则头指针向右移动,寻找更高的高度来容纳更多的水
if(height[head] < height[tail]) head++;
//否则尾指针向左移动
else tail--;
}
return ans;
}
}
- 代码执行过程