【双指针】Leetcode 11. 盛最多水的容器
---------------🎈🎈题目链接🎈🎈-------------------
解法1 典型双指针
时间复杂度O(N)
空间复杂度O(1)
双指针,前后,策略是每次向内移动小的那个,然后和result的结果比大小,当left>=right 的时候跳出
如果向内移动长的,那么面积肯定是变小(因为短的没动)
如果向内移动短的,那么面积有可能会变大!
class Solution {
public int maxArea(int[] height) {
int result = 0;
// 双指针,前后,策略是每次向内移动小的那个,然后和result的结果比大小,当left>=right 的时候跳出
// 如果向内移动长的,那么面积肯定是变小(因为短的没动)
// 如果向内移动短的,那么面积有可能会变大!
int right = height.length-1;
int left = 0;
while(left < right){
int shortlen = Math.min(height[left], height[right]);
int square= (right-left)*shortlen;
if(square>result){
result = square;
}
if(height[left] > height[right]){
right--;
}
else {
left++;
}
}
return result;
}
}