[LeetCode] 11. 盛最多水的容器(java实现)双指针算法
1. 题目
2. 读题(需要重点注意的东西)
思路:
暴力:O(n^2),会超时
双指针算法(优化版):用指针 i 指向开头,指针 j 指向结尾,如果 height[j] < height[i].,则 j --,否则 i ++;计算并更新最大的容积。
证明:
假设左边界先达到最优解,那么右边界一定能
3. 解法
---------------------------------------------------解法---------------------------------------------------:
class Solution {
public int maxArea(int[] height) {
int res = 0;
int i = 0;
int j = height.length - 1;
while(i < j){
int h = Math.min(height[i],height[j]);
res =Math.max(h*(j-i),res);
if(height[i] < height[j]) i++;
else j--;
}
return res;
}
}
4. 可能有帮助的前置习题
5. 所用到的数据结构与算法思想
- 双指针算法
- 贪心