首页 > 其他 > 详细

Leetcode-011-盛最多水的容器

时间:2020-02-22 22:35:17      阅读:92      评论:0      收藏:0      [点我收藏+]

本题的暴力法不难,难的是 O(n) 的方法。

移动的策略是每次向内移动较短的那一端,为什么呢,因为如果向内移动长的那一端面积一定减少,但是移动短的那一端存在面积变大的可能性。

关键的关键就是向内移动长的那端面积一定见少,这样思路就明确了。

class Solution {
    public int maxArea(int[] height) {
        int l=0;
        int r=height.length-1;

        int result = 0;

        while(l<r){
            result = Math.max(result, Math.min(height[l], height[r]) * (r - l));

            if(height[l]<height[r]){
                l++;
            }else{
                r--;
            }
        }
        return result;
        
    }
}
class Solution:
    def maxArea(self, height: List[int]) -> int:

        i=0
        j=len(height) - 1
        result = 0

        while i<j:
            result = max(result, min(height[i], height[j])*(j-i))
            if height[i]<height[j]:
                i+=1
            else:
                j-=1
        return result

 

Leetcode-011-盛最多水的容器

原文:https://www.cnblogs.com/huangzengrui/p/12347357.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!