【双指针】Leetcode 11. 盛最多水的容器
- 解法1 典型双指针
---------------🎈🎈题目链接🎈🎈-------------------
解法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;}
}