leetcode20200418每日一题-11.盛最多水的容器

1.题目

在这里插入图片描述

2.题目意思

如图所示,给定一个列表,列表里每个数作为一个柱子,找出两个柱子,使得接的水最多。

3.代码

class Solution:
    def maxArea(self, height: List[int]) -> int:
        res=0
        i=0
        j=len(height)-1
        while i<j:
            temp=(j-i)*min(height[i],height[j])
            if temp>res:
                res=temp
            if height[i]<height[j]:
                i+=1
            else:
                j-=1
        return res

思路:双指针

最简单的还是暴搜了,但是用双指针更好,而且简单且好理解。初始化两个指针分别指向数组首尾。然后计算能积多少水,temp=(j-i)*min(height[i],height[j]),并更新结果res的值。之后,长度短的指针向内部移动。因为既然要得到最大积水量,自然要保留长的,换掉短的~

冲冲冲

发布了18 篇原创文章 · 获赞 1 · 访问量 789

猜你喜欢

转载自blog.csdn.net/shuaishuaihyh/article/details/105594902