LeetCode Hot 100 --- 盛最多水的容器 (java)
Posted 小样5411
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Hot 100 --- 盛最多水的容器 (java)相关的知识,希望对你有一定的参考价值。
题目
有一道相似题,可以看看,相似扩展:接雨水问题
解析与代码
这道题最容易想到的是暴力破解,两个遍历,但是这复杂度太高,当数组元素非常多时,运行时间就太长,所以根据接雨水问题的启发,可以用双指针法
for(int i = 0 ; i < len - 1 ; i++){
for(int j = i + 1 ; j < len ; j++){
//write code
}
}
双指针法
class Solution {
public int maxArea(int[] height) {
int left = 0;//left、right指针
int right = height.length - 1;
int max = 0;//最大容纳量
//left>=right,即相遇,就跳出
while(left < right){
int area = Math.min(height[left],height[right]) * (right - left);
max = Math.max(max,area);
//若向内移动短板,水槽的短板可能变大,因此下个水槽的面积可能增大
//若向内移动长板,那水槽面积一定减小
if(height[left] <= height[right]){
left++;
}else{
right--;
}
}
return max;
}
}
以上是关于LeetCode Hot 100 --- 盛最多水的容器 (java)的主要内容,如果未能解决你的问题,请参考以下文章