力扣(LeetCode) ——11.盛水最多的容器(C++)

题目:11.盛水最多的容器

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

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

返回容器可以储存的最大水量。
说明: 你不能倾斜容器。

解题思路:

解法一: 使用暴力求解,通过两个循环来遍历查找最大值。时间复杂度为:O(n^2^)

解法二: 使用双指针来求解,遍历一遍数组即可找到最大值。时间复杂度为:O(n)

  1. left指向第一个位置,right指向最后一个位置;
  2. left大于right结束循环;
  3. 通过leftright的位置算出当前能够容纳水的值,用一个临时变量存储,用max函数取最大值;
  4. 再判断两个位置的值,当left下标位置的值小时++,right下标位置小时--;
  5. 重复循环第三步和第四步直到循环结束则求出了最大值。

最终代码:

cpp 复制代码
int maxArea(vector<int>& height) 
{
	 int left =0;
	 int right = height.size() - 1;
	 int ret = 0;
	 while(left < right)
	 {
	     int tmp = min(height[left], height[right]) * (right - left);
	     ret = max(ret , tmp);
	     if(height[left] < height[right])
	     {
	         left++;
	     }
	     else
	     {
	         right--;
	     }
	 }
	 return ret;
}

赶紧动起手来吧!!!

点击下方即可跳转
11.盛水最多的容器

相关推荐
兰令水5 分钟前
leecodecode【面试150】【2026.6.14打卡-java版本】
java·算法·面试
凡人叶枫7 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp7 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的7 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉8 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
青山木8 小时前
Hot 100 --- 轮转数组
java·数据结构·算法
徐小夕8 小时前
Loop Engineering 深度解析与实战指南(全网最全)
前端·算法·github
凡人叶枫8 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
北域码匠9 小时前
SHA-1算法:安全哈希原理与应用解析
算法·c#·哈希算法
坚果派·白晓明10 小时前
【鸿蒙PC】SDL3 移植:AtomCode Skills 4 步速通多媒体库适配
c++·华为·ai编程·harmonyos·atomcode·c/c++三方库