十一、盛水最多的容器
题目:来源于LeetCode
代码:
暴力解法,把每两个木板之间的容积都算出来进行比较。但是因为太过于占用内存和浪费时间,官方没有给通过。
class Solution {public:int minH(int a,int b){if(a<b)return a;else return b;}int area(int a,int b,int c){return a*(b-c);}int maxArea(vector<int>& height) {//首先要确定容积和什么有关。越往里面找,底面积越小,想要容积增加就需要高变大。auto beg=height.begin(),end =height.end();int h_left = *beg;int h_right = *(end-1);int Area =minH(h_left,h_right)*(end-beg-1);//作为初始默认最大面积//暴力算法就是让他直接比面积大小for(int i=0;i!=end-beg-1;++i)for(int j=i+1;j!=end-beg;++j){int NewArea=area(minH(height[i],height[j]),j,i);if(NewArea>Area)Area = NewArea; }return Area;}
};
官方示例:
class Solution {public:int maxArea(vector<int>& height) {int l = 0, r = height.size() - 1;int ans = 0;while (l < r) {int area = min(height[l], height[r]) * (r - l);ans = max(ans, area);if (height[l] <= height[r]) {++l;}else {--r;}}return ans;}
};
总结:
暴力解法虽然能完成任务,但是太浪费内存和时间。
官方用的是双指针的形式,确实很厉害,之前根本就没有考虑过。而且仔细思考之后,发现,的确不断舍弃短的木板向内移动,确实可行。不会出现漏掉最大值的情况。
十一、盛水最多的容器相关推荐
- 力扣--盛水最多的容器
题目: 给你 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条 ...
- LeetCode 11盛水最多的容器12整数转罗马数字
目录 盛水最多的容器 题目描述 分析 整数转罗马数字 题目描述: 分析 结语 盛水最多的容器 公众号:bigsai,回复进群加入打卡,回复bigsai获取3GB的pdf资源.点赞再看,养成习惯! 题目 ...
- Container with most water(盛水最多的容器)
Container with most water(盛水最多的容器) 简单的证明 如图 题目: 给定 n 个非负整数 a1,a2,-,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n ...
- Leetcode:11.container-with-most-water(盛水最多的容器)
一开始直接想用暴力法加剪枝擦边通过的,没想到还是超时了: 谁知道最后输入从1-15000一共15000个数据,吓坏! 题解中得知双指针实现O(n),真的学到了,羡慕这些大佬的智商: 借鉴大佬题解:对O ...
- leecode11 盛水最多的容器
给定 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).找出其中的两条线, ...
- 牛客在线编程101-93 盛水最多的容器
描述 给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水 1.你不能倾斜容器 2.当n小于2 ...
- 力扣:11盛水最多的容器
class Solution:def maxArea(self, height: List[int]) -> int:i, j, res = 0, len(height) - 1, 0while ...
- Leetcode题库 11.盛水最多的容器(双指针法 C实现)
文章目录 解析 思路 原理 代码 写法1 写法2 解析 p_0:左"指针" p_1:右"指针" Area:当前双"指针"代表面积大小 ret ...
最新文章
- 基于Kotlin实现的GankIo客户端
- pgd 游戏教程 基地
- 用 State Pattern 来实现一个简单的 状态机
- [Project Euler] 来做欧拉项目练习题吧: 题目013
- c+ 引用传递坑_了解C ++中的引用传递
- LeetCode之根据字符出现频率排序
- microsoft visual c++与microsoft visual net 版本对应关系
- Java学生管理系统项目
- endnote修改正文中参考文献标注_Endnote之文献标注
- 净资产收益率ROE连续3年超过15%的股票排名
- 易企秀手机html5场景源码,仿易企秀V15.1手机网页DIY制作工具完整版开源版源码修复采......
- iOS 定位服务编程详解
- 信息收集之主动信息收集(一)
- 大数据生态(六)zookeeper集群部署(Linux和Windows[含一键启动脚本])
- KB/S MBPS转换
- 我的物联网项目(二十九) 线上前期运营
- Java Grammer:数据类型
- RHCSA第四天学习内容心得
- 【强化学习论文】Decision Transformer:通过序列建模进行强化学习
- 驾照 科目二评判标准
热门文章
- 量化交易之python基础篇 - 常规异常处理、在函数中主动抛出异常
- 深度学习之“制作自定义数据”--torch.utils.data.DataLoader重写构造方法。
- Delphi调用外部程序函数详解
- java处理json字符串_常见java对象转换为json字符串处理!!!
- 那些年我们在一线背锅的日子- 运维经理手记
- java ajax找回密码,Java之AjaxAjax异步校验用户名
- java序列化如何实现_什么是java序列化,如何实现java序列化
- (2019)通过机器学习从建筑物中的Wi-Fi数据推断居住人数
- java共识算法_PBFT共识算法详细分析及Java实现
- 真无线什么品牌适合玩游戏?2021新款低延迟游戏专业蓝牙耳机推荐