当前位置: 首页 > news >正文

LeetCode 11题“盛最多水的容器”

题目

https://leetcode.cn/problems/container-with-most-water/description/?envType=study-plan-v2&envId=selected-coding-interview

问题分析

LeetCode 11题“盛最多水的容器”要求在给定的一组垂直线中,找出两条线,使得它们与x轴共同构成的容器可以容纳最多的水。容器的容量由两条线之间的距离和较短线的高度决定。

解题思路

最直接的方法是枚举所有可能的线对并计算其容量,但这种方法的时间复杂度为O(n²),效率较低。更优的解法是使用双指针法:

  1. 初始化双指针:一个指向数组的开始(left),另一个指向数组的末尾(right)。
  2. 计算当前容量:使用当前左右指针所指的线计算容量,并更新最大容量。
  3. 移动指针:每次移动较短的那条线的指针(向内移动)。这是因为移动较长的线不会增加容量,而移动较短的线可能找到更高的线,从而增加容量。
  4. 重复步骤2-3:直到左右指针相遇。

这种方法的时间复杂度为O(n),因为只需要遍历一次数组。

代码实现

下面是使用C++实现的代码:

#include <vector>
using namespace std;class Solution {
public:int maxArea(vector<int>& height) {int left = 0;int right = height.size() - 1;int max_area = 0;while (left < right) {// 计算当前容量int current_area = min(height[left], height[right]) * (right - left);max_area = max(max_area, current_area);// 移动较短的线的指针if (height[left] < height[right]) {left++;} else {right--;}}return max_area;}
};

代码解释

  1. 初始化变量leftright分别指向数组的首尾,max_area用于记录最大容量。
  2. 循环条件:只要left小于right,就继续循环。
  3. 计算当前容量:容量由较短的线和两线之间的距离决定。
  4. 更新最大容量:如果当前容量大于已记录的最大容量,则更新。
  5. 移动指针:移动较短的线的指针,以寻找可能更大的容量。

这种方法通过贪心策略,逐步缩小搜索空间,确保在O(n)时间内找到最优解。

http://www.dtcms.com/a/241584.html

相关文章:

  • 云原生核心技术 (6/12): K8s 从零到一:使用 Minikube/kind 在本地搭建你的第一个 K8s 集群
  • JWT令牌如何在FastAPI中实现安全又高效的生成与验证?
  • 【docker n8n】windows环境如何挂载
  • 论文分享 _ Ladder:一种基于收敛的结构化图区块链_2025-06-10
  • 记录chrome浏览器的一个bug
  • 项目四.高可用集群_ansible
  • Java 数据结构和集合框架(二十二)
  • 区块链Web3项目的开发
  • Linux中shell的循环控制语句和函数讲解
  • 深度学习小项目合集-视频介绍下自取
  • Ansible小试牛刀
  • Spring Boot循环依赖全场景解析与终极解决方案
  • Cloudreve 私有云盘系统部署
  • 【WSL2】Windows11开启WSL2
  • 2025年渗透测试面试题总结-云南云钺信息安全(云南)有限公司[社招]技术工程师(题目+回答)
  • 麒麟系统集成开发环境Kylin-IDE初体验,菜鸟小白入门教程
  • ceph集群调整pg数量实战(上)
  • MyBatis的#和$符号详解(Java面试)
  • AtCoder Beginner Contest 408
  • 循环冗余码校验CRC码 算法步骤+详细实例计算
  • 【C】十六进制(Hex)与ASCII
  • okhttp 实现长连接的完整方案
  • 降低显存,优化性能方案 MHA MQA GQA MLA MFA
  • 《高等数学》(同济大学·第7版)第四章第一节不定积分的概念与性质
  • CMake测试find_package()命令的相关原理
  • 商品中心—2.商品生命周期和状态的技术文档
  • [FX5U-PLC] 变频器的多段速变频调速控制系统
  • 可视化如何全方位赋能销售工作
  • Windows 文件路径与文件名限制
  • 大数据零基础学习day1之环境准备和大数据初步理解