视频素材交易网站建设呼市网页设计培训
news/
2025/9/23 14:09:26/
文章来源:
视频素材交易网站建设,呼市网页设计培训,dedecms 网站地图生成,网页源代码里哪个是视频链接文章目录 题目解析算法原理解法一#xff1a;暴力枚举(超时#xff09;解法二#xff1a;双指针单调性 代码实现暴力枚举(超时#xff09;双指针单调性(时间复杂度为O(N)#xff0c;空间复杂度为O(1)#xff09; 题目解析
题目链接#xff1a;11.盛最多水的容器 这道题… 文章目录 题目解析算法原理解法一暴力枚举(超时解法二双指针单调性 代码实现暴力枚举(超时双指针单调性(时间复杂度为O(N)空间复杂度为O(1) 题目解析
题目链接11.盛最多水的容器 这道题简单理解为要我们求长方形的面积就行了。
算法原理
解法一暴力枚举(超时
枚举出能构成的所有容器找出其中容积最⼤的值。 容器容积的计算⽅式 设两指针leftright分别指向⽔槽板的最左端以及最右端此时容器的宽度为right-left。由于容器的⾼度由两板中的短板决定因此可得容积公式 v (right-left) * min( height[left], height[right]).
解法二双指针单调性
设两个指针left right 分别指向容器的左右两个端点此时容器的容积: v (right - left) * min(height[right], height[left])容器的左边界为height[left] 右边界为height[right] 。为了⽅便叙述我们假设「左边边界」⼩于「右边边界」。
如果此时我们固定⼀个边界改变另⼀个边界⽔的容积会有如下变化形式
容器的宽度⼀定变⼩。由于左边界较⼩决定了⽔的⾼度。如果改变左边界新的⽔⾯⾼度不确定但是⼀定不会超过右边的柱⼦⾼度因此容器的容积可能会增⼤。如果改变右边界⽆论右边界移动到哪⾥新的⽔⾯的⾼度⼀定不会超过左边界也就是不会超过现在的⽔⾯⾼度但是由于容器的宽度减⼩因此容器的容积⼀定会变⼩的。
由此可⻅左边界和其余边界的组合情况都可以舍去。所以我们可以left 跳过这个边界继续去判断下⼀个左右边界。 当我们不断重复上述过程每次都可以舍去⼤量不必要的枚举过程直到left 与right 相遇。期间产⽣的所有的容积⾥⾯的最⼤值就是最终答案。
代码实现
暴力枚举(超时
class Solution {
public:int maxArea(vectorint height) {int maxVolume 0,n height.size();for(int left 0;left n;left){for(int right left;right n;right){maxVolume max(maxVolume,(right - left) * min(height[left],height[right]));}}return maxVolume;}
};双指针单调性(时间复杂度为O(N)空间复杂度为O(1)
class Solution {
public:int maxArea(vectorint height) {int left 0,right height.size() - 1;//双指针int maxVolume 0;//记录结果while(left right){maxVolume max(maxVolume,(right - left) * min(height[left],height[right]));if(height[left] height[right])right--;else left;}return maxVolume;}
};
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912788.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!