力扣(leetcode) 11. 盛最多水的容器 (短板木桶原理详解)
题目在这:https://leetcode-cn.com/problems/container-with-most-water/
思路分析:
本题容易想到使用双指针维护水桶的左边和右边。
开始时,L指向最左端,R指向最右端。
我们将较垂直高度短的那一边往里面挪动。
为什么移动较短的一边?
(本题重点,必看!)
面积取决于短板高度和底面长度
面积 = 短板高 * 底面长
无论是移动短板或者长板,我们都只关注移动后的新短板会不会变长,所构成面积会不会变大,而每次移动的木板都只有三种情况,比原板短,比原板长,与原板相等;
如果向内移动短板,对于新的木板 1.比原板更短,则新面积更小,2.比原板更长,则新面积可能变大或不变,3.和原木板相等,则新面积变小;
如向内移动长板,对于新的木板:1.比原短板短,则新面积更小。2.与原短板相等或者比原短板长,则新面积不变或变小。所以,向内移动长板,一定不能使新面积增大。(因为短板没变,即底边变短了,高没变)
完整代码
def maxArea(self, height: List[int]) -> int:left = 0right = len(height) - 1area = 0while left < right:cur = min(height[left], height[right]) * (right - left) # 面积 = 短板高 * 底面长area = max(area, cur)# 较短的垂直线往中间移动if height[left] < height[right]:left += 1else: # 长的往中间动right -= 1return area
力扣(leetcode) 11. 盛最多水的容器 (短板木桶原理详解)相关推荐
- [贪心|双指针] leetcode 11 盛最多水的容器
[贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...
- LeetCode 11. 盛最多水的容器
11. 盛最多水的容器 思路:双指针,放弃低的那边 class Solution { public:int maxArea(vector<int>& height) {int n= ...
- LeetCode 11. 盛最多水的容器(双指针)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) . 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...
- leetcode —— 11. 盛最多水的容器
给定 n 个非负整数 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an,每个数代表坐标中的一个点 (i,ai)(i, a_i)(i,ai) .在坐标内画 n 条垂 ...
- 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...
- LeetCode #11 盛最多水的容器
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...
- LeetCode——11. 盛最多水的容器
题目链接:https://leetcode-cn.com/problems/container-with-most-water/ #include <bits/stdc++.h> #inc ...
- LeetCode 11 盛最多水的容器
https://leetcode-cn.com/problems/container-with-most-water/ 解决方案 class Solution {public int maxArea( ...
- 算法leetcode|11. 盛最多水的容器(rust重拳出击)
文章目录 11. 盛最多水的容器: 样例 1: 样例 2: 提示: 原题传送门: 分析 题解 rust go c++ java typescript python 11. 盛最多水的容器: 给定一个长 ...
最新文章
- gabor小波matlab,用matlab实现gabor小波对图片的纹理特征提取【转】
- uGUI知识点剖析之RectTransform
- oracle 输出 三角形,10. 三角形(示例代码)
- Core Data(3)- 使用绑定
- 文本编码-Python2.x处理中文字符串
- MetInfo最新版代码审计漏洞合集
- 上传图片自动加水印html,html5上传多个文件并添加水印 实例源码
- 作者:连德富,男,电子科技大学讲师、教育大数据研究所副所长。
- oracle 审计(二)
- 【英语学习】【Level 07】U01 Making friends L3 Do you eat here a lot?
- 同步异步和阻塞非阻塞
- 软件_搭建rtmp视频推送环境,腾讯云,ubuntu16
- net core 2 读取appsettings.json
- php数量百分比,mysql PHP行数+百分比
- H5利用JS调用摄像头实现拍照效果
- RINEX广播星历文件读取(N文件)
- Gabor滤波器学习
- Lunix磁盘与文件系统管理
- 设置计算机网络密码怎么设置路由器,如何在计算机上设置路由器密码?
- 大学《管理学》教材笔记