| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> LeetCode 面试必刷 盛水最多的容器 Container With Most Water -> 正文阅读 |
|
[数据结构与算法]LeetCode 面试必刷 盛水最多的容器 Container With Most Water |
🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 🎈 关注专栏:LeetCode面试必备100题?(优质好文持续更新中……)🚀 一、题目描述给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 其中: 2 <= n <= 10^5 0 <= height[i] <= 104 注意:不能倾斜容器。 二、测试样例输入:[1,8,6,2,5,4,8,3,7] 输出:49 上面的表格是数组的图形化表示,很明显蓝色部分是最大的容器,容器左右的值为 8 和 7,故总容量为:7*7 = 49。 三、解题思路看到这个题目,最先想到的方法可能是两层 for 循环,如下所示:
时间复杂度为:O(n^2),但是题目中 2 <= n <= 10^5,显示然时间复杂度不允许。 另外,这个题目本能应该能想到做出这个题的时间复杂度为 O(n),只需要遍历一次或两次就能达到目标,下面来看一下双指针法。 使用两个指针 left 和 right,分别指向最左边的和最右边的整数,计算 left 和 right 形成的容器大小,移动 left 和 right 中指向的整数小的指针,继续计算新的指针 left 和 right 形成的容器大小,并记录最大的容器大小,直到 left >= right 停止计算。 四、代码实现
五、题目链接?好文推荐? 🎈 欢迎小伙伴们点赞👍、收藏?、留言💬 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:35:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |