leetcode 11
1 题目
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
2 解法
2.1 思路
这道题用双指针的解法可以让时间复杂度o(N).
至于为什么可以用双指针的方法,思路如下:
第一步, 让左指针在最左边, 右指针在最右边, 假设左边界的值为x, 右边界的值为y, 左右边界的距离为t, 那么此时能容纳的水为V = min(x, y) * t;
如果想要找到比V更大的左右边界, 我们需要看x和y的大小, 如果x<y, 那么左边界和任意一个另外一个右边界组合都不会比现在的V大, 所以它就不可能是今后的目标的.所以左边界舍弃, 也就是左边界往右移一, 把现在左右边界看作一个新的容器, 重复第一步(右边界同理). 所以这就转化为了双指针问题.
2.2 代码
int maxArea(vector<int>& height) {int maxCapacity = 0;int left = 0;int right = height.size() - 1;while (left < right) {int tCapacity = (right - left) * min(height[left], height[right]);if (tCapacity > maxCapacity) {maxCapacity = tCapacity;}if (height[left] < height[right]) {left ++;} else {right --;}}return maxCapacity;}
leetcode 11相关推荐
- LeetCode 11. Container With Most Water--Java 解法--困雨水简单版
LeetCode 11. Container With Most Water–Java 解法 此文首发于我的个人博客:LeetCode 11. Container With Most Water–Ja ...
- LeetCode 11 Container With Most Water
问题:给出一个数组nums,要求选择2个,使得容器中包含的水最多. 思路:假设选取x,y,其中x<y,则包含的水为min(x,y)*(index(y) - index(x)).此时应该选择在最小 ...
- [贪心|双指针] leetcode 11 盛最多水的容器
[贪心|双指针] leetcode 11 盛最多水的容器 1.题目 题目链接 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 ...
- 【贪心+双指针】LeetCode 11. Container With Most Water
LeetCode 11. Container With Most Water Solution1: 参考网址:http://www.cnblogs.com/grandyang/p/4455109.ht ...
- leetcode 11:旋转数组的最小数字
leetcode 11:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按 ...
- 6. Leetcode 11. 盛最多水的容器 (数组-双向双指针)
给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其中的两条线 ...
- LeetCode 11盛水最多的容器12整数转罗马数字
目录 盛水最多的容器 题目描述 分析 整数转罗马数字 题目描述: 分析 结语 盛水最多的容器 公众号:bigsai,回复进群加入打卡,回复bigsai获取3GB的pdf资源.点赞再看,养成习惯! 题目 ...
- 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 条垂 ...
- LeetCode 11. 盛最多水的容器
11. 盛最多水的容器 思路:双指针,放弃低的那边 class Solution { public:int maxArea(vector<int>& height) {int n= ...
最新文章
- 【课堂笔记系列】二进制
- springboot中如何获取yml配置文件中的配置信息
- windows中如何设置开机自启tomcat,nginx,jdk等应用服务的解决办法
- python链接hbase模块_HBase实战(1):使用Python连接Hbase数据库
- MySQL 的覆盖索引与回表
- ios学习Day3xiawu
- html中写随机数,为HTML生成一个随机数
- [转贴]犯贱报(一张浓缩大学生活的..)
- Linux备份策略研究
- 面试题 04.04. 检查平衡性
- Linux升级php
- SpringMvc-@ExceptionHandler
- 枚举很好用啊,为啥阿里不建议返回值用枚举?看看作者孤尽的回答
- Symbian S60 自动通话录音
- Pensieve Multi_agent代码详解以及A3C强化学习代码详解
- 硬件工程师基本元器件类复习——三极管
- MySQL JSON_EXTRACT()、JSON_UNQUOTE() 函数获取JSON串的值
- vue项目使用i18n插件实现多语言切换功能
- 6-系统管理员密码破解
- Captura – 带键盘按键录制的录屏工具,支持直播[Windows]
热门文章
- 小牛地图矢量抓取工具_SEO优化网站sitemap需要注意哪些要点才能很好的被百度蜘蛛抓取...
- 《Python快速入门》6大数据类型详解
- 复制带随机节点的链表
- Python 使用 Scrapy 发送 post 请求的坑
- Java加密与解密的艺术~Provider
- Redis系列四、redis的五种数据结构和相关指令之List
- 南开大学计算机原理在线作业,南开大学20秋《计算机原理》在线作业-1(参考答案)...
- PineApple_Ninja.js
- 中山大学计算机是A类学科吗,中山大学a类学科有哪些?附中大a类学科名单
- 去除ring3层的Debug标志