LeetCode 11 Container with Most Water 解题思路和python代码

题目:

You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]).

Find two lines that together with the x-axis form a container, such that the container contains the most water.

Return the maximum amount of water a container can store.

Notice that you may not slant the container.

Example 1:

Input: height = [1,8,6,2,5,4,8,3,7]

Output: 49

Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

Example 2:

Input: height = [1,1]

Output: 1

Constraints:

n == height.length

2 <= n <= 105

0 <= height[i] <= 104

解题思路:

我们可以看到这里水的体积多少取决于两边的竖直线中较短的那一条。我们可以使用两个指针,一个指向数组的第一个数,另一个指向数组的第二个数。我们可以计算面积,同时移动两个指针中,指向较短竖直线的那一个。

python 复制代码
class Solution:
    def maxArea(self, height: List[int]) -> int:
        left = 0
        right = len(height) - 1
        max_area = 0
        
        while left < right:
        	# Calculate the current area 
            width = right - left
            current_area = min(height[left], height[right]) * width

			# Update max_area if the current one is larger
            max_area = max(max_area, current_area)

			# Move the pointer that points to the shorter line
            if height[left] < height[right]:
                left += 1
            else:
                right -= 1
        return max_area
        

Time Complexity 是 O(n)

Space Complexity 是 O(1)

相关推荐
张3蜂2 小时前
Gunicorn深度解析:Python WSGI服务器的王者
服务器·python·gunicorn
rayufo7 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
芒克芒克8 小时前
LeetCode 题解:除自身以外数组的乘积
算法·leetcode
Python 老手8 小时前
Python while 循环 极简核心讲解
java·python·算法
开源技术9 小时前
如何将本地LLM模型与Ollama和Python集成
开发语言·python
weixin_437044649 小时前
Netbox批量添加设备——堆叠设备
linux·网络·python
我有医保我先冲9 小时前
AI 时代 “任务完成“ 与 “专业能力“ 的区分:理论基础、行业影响与个人发展策略
人工智能·python·机器学习
YuTaoShao10 小时前
【LeetCode 每日一题】3010. 将数组分成最小总代价的子数组 I——(解法二)排序
算法·leetcode·排序算法
测试开发Kevin10 小时前
小tip:换行符CRLF 和 LF 的区别以及二者在实际项目中的影响
java·开发语言·python
爱学习的阿磊10 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python