文章目录

  • 11. 盛最多水的容器:
    • 样例 1:
    • 样例 2:
    • 提示:
    • 原题传送门:
  • 分析
  • 题解
    • rust
    • go
    • c++
    • java
    • typescript
    • python

11. 盛最多水的容器:

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0)(i, height[i])

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明: 你不能倾斜容器。

样例 1:

输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

样例 2:

输入:height = [1,1]输出:1

提示:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

原题传送门:

https://leetcode.cn/problems/container-with-most-water/description/


分析

  • 面对这道算法题目,二当家的陷入了沉思。
  • 最终放多少水,只和宽度,高度有关。
  • 由于有两个变量,所以很难一下判断如何才能最大。
  • 我们不妨先让一个量最大,这样结果就只和另一个量有关了。
  • 我们先取最左和最右两个端点构成容器,这时候容器的宽度最大,高度只能是两个端点较小的一个,记录下来盛水量。
  • 下一步,我们将较小的一个端点向中间移动,宽度会缩小,所以我们希望能找到更高的端点,如果移动较高的端点,那么容器的高度不会变高,因为被低的那个端点限制了,所以我们应该移动那个低的端点,这样才有希望找到更高的端点,使得容器整体变高。

题解

rust

impl Solution {pub fn max_area(height: Vec<i32>) -> i32 {let mut maxArea = 0;let mut l = 0;let mut r = height.len() - 1;while l < r {let mut area;if height[l] < height[r] {area = (r - l) as i32 * height[l];l += 1;} else {area = (r - l) as i32 * height[r];r -= 1;}maxArea = maxArea.max(area);}return maxArea;}
}

go

func maxArea(height []int) int {maxArea := 0l := 0r := len(height) - 1for l < r {var area intif height[l] < height[r] {area = (r - l) * height[l]l++} else {area = (r - l) * height[r]r--}if area > maxArea {maxArea = area}}return maxArea
}

c++

class Solution {public:int maxArea(vector<int>& height) {int maxArea = 0;int l = 0, r = height.size() - 1;while (l < r) {int area;if (height[l] < height[r]) {area = (r - l) * height[l++];} else {area = (r - l) * height[r--];}maxArea = max(maxArea, area);}return maxArea;}
};

java

class Solution {public int maxArea(int[] height) {int maxArea = 0;int l       = 0, r = height.length - 1;while (l < r) {int area;if (height[l] < height[r]) {area = (r - l) * height[l++];} else {area = (r - l) * height[r--];}maxArea = Math.max(maxArea, area);}return maxArea;}
}

typescript

function maxArea(height: number[]): number {let maxArea = 0;let l       = 0, r = height.length - 1;while (l < r) {let area;if (height[l] < height[r]) {area = (r - l) * height[l++];} else {area = (r - l) * height[r--];}maxArea = Math.max(maxArea, area);}return maxArea;
};

python

class Solution:def maxArea(self, height: List[int]) -> int:l, r = 0, len(height) - 1ans = 0while l < r:if height[l] < height[r]:area = (r - l) * height[l]l += 1else:area = (r - l) * height[r]r -= 1ans = max(ans, area)return ans

非常感谢你阅读本文~
欢迎【点赞】【收藏】【评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~


算法leetcode|11. 盛最多水的容器(rust重拳出击)相关推荐

  1. [贪心|双指针] leetcode 11 盛最多水的容器

    [贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...

  2. LeetCode 11. 盛最多水的容器

    11. 盛最多水的容器 思路:双指针,放弃低的那边 class Solution { public:int maxArea(vector<int>& height) {int n= ...

  3. 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)

    给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...

  4. LeetCode 11. 盛最多水的容器(双指针)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) . 在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 ...

  5. 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) .找出其中的两条线 ...

  7. LeetCode——11. 盛最多水的容器

    题目链接:https://leetcode-cn.com/problems/container-with-most-water/ #include <bits/stdc++.h> #inc ...

  8. LeetCode 11 盛最多水的容器

    https://leetcode-cn.com/problems/container-with-most-water/ 解决方案 class Solution {public int maxArea( ...

  9. 力扣(leetcode) 11. 盛最多水的容器 (短板木桶原理详解)

    题目在这:https://leetcode-cn.com/problems/container-with-most-water/ 思路分析: 本题容易想到使用双指针维护水桶的左边和右边. 开始时,L指 ...

最新文章

  1. hadoop端口号列表
  2. 全卷积神经网路【U-net项目实战】论文中U-Net网络实现
  3. 10次迭代9次delay??拒绝项目延期,这里有一整套方法!
  4. 全国信息学奥林匹克联赛 ( NOIP2014) 复赛 模拟题 Day1 长乐一中
  5. NETSH WINSOCK RESET这条命令的含义和作用?
  6. 2019 wannafly winter camp day5-8代码库
  7. html主要的骨架结构
  8. 腾讯云2019年全年营收超170亿元,腾讯健康码累计访问量达80亿次
  9. VBA基本语法及基本使用
  10. AD15使用出现的小问题
  11. Mahony 互补滤波算法
  12. Java怎样实现验证码?
  13. Unity粒子特效工具需求文档
  14. SAP ERP和ORACLE ERP的区别是哪些?
  15. 信息学奥赛一本通1005:地球人口承载力估计
  16. day04---禅道的使用
  17. 3D打印在精密铸造领域应用的优势
  18. 计算机视觉、模式识别、机器学习牛人主页
  19. 再探Struts框架
  20. CDN里面的一些名词你知道是什么意思吗?

热门文章

  1. [健康]为什么会产生湿热体质?
  2. 【解决方案】云-边-端三体协同使用边缘端EasyNVR视频边缘计算网关搭建水上安全监管平台
  3. 开发实现物理加速度移动_《无限法则》开发经验分享:射击游戏的物理引擎应用和移动模拟...
  4. ​互联网的厕所,乃兵家的必争之地
  5. 刷magisk模块后不能开机_安装Magisk模块导致手机无法正常开机,最简单的修复办法...
  6. 智慧教室系统服务器参数,智慧教室教学系统的设计与实现
  7. 小程序中接口的问题及坑
  8. android微信模拟,Android中使用ListView模拟微信好友功能
  9. 《影响力》全书思维导图精华版分享
  10. 有关于contentEditable