LeetCode-[双指针法]Container With Most Water
2017-09-02 21:43
507 查看
双指针法
即从左右两端开始扫描,若满足某种条件则会向中间移动,如此这样可以将复杂度从N2降至N
题意:每个点和X轴垂直,构成一个边,任选两个组成挡板储存水,求最多能储藏多少水。
分析:1、能放多少水由最短的板子决定。2、因为和位置有关,数据不能排序 3、暴力思维是枚举所有的情况,若想减少比较次数,第一反应是储存前面的最高?但是仍和两个板子间的距离有关,没有办法。
使用双指针,若左边板子高,计算此时的值和最大值。然后右边左移,此时减少的是右边板子的其余所有可能。因为右边板子的其余所有可能值都会比这个小。
即从左右两端开始扫描,若满足某种条件则会向中间移动,如此这样可以将复杂度从N2降至N
题意:每个点和X轴垂直,构成一个边,任选两个组成挡板储存水,求最多能储藏多少水。
分析:1、能放多少水由最短的板子决定。2、因为和位置有关,数据不能排序 3、暴力思维是枚举所有的情况,若想减少比较次数,第一反应是储存前面的最高?但是仍和两个板子间的距离有关,没有办法。
使用双指针,若左边板子高,计算此时的值和最大值。然后右边左移,此时减少的是右边板子的其余所有可能。因为右边板子的其余所有可能值都会比这个小。
class Solution(object): def maxArea(self, height): """ :type height: List[int] :rtype: int """ hlen=len(height) if hlen<2: return 0 l=0 r=hlen-1 ans=0 while l<r: ans=max((r-l)*min(height[r],height[l]),ans) if height[l]<height[r]: l+=1 else: r-=1 return ans
相关文章推荐
- LeetCode 11 Container With Most Water
- 【leetcode】Container With Most Water
- LeetCode 11 Container With Most Water
- Container With Most Water - Leetcode
- Container With Most Water (隔板如何蓄水) 【leetcode】
- leetcode — container-with-most-water
- [Leetcode] container with most water 最大水容器
- Leetcode - Container With Most Water
- leetcode--Container With Most Water
- LeetCode(11)Container With Most Water
- [Leetcode 43] 11 Container With Most Water
- LeetCode | #11 Container With Most Water
- LeetCode 11 Container With Most Water
- [LeetCode 11] Container With Most Water
- 【Leetcode】【python】Container With Most Water
- LeetCode:Container With Most Water
- 【leetcode】Container With Most Water
- LeetCode 011 Container With Most Water
- LeetCode 11_Container With Most Water
- 【LeetCode】Container With Most Water