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

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.xdnf.cn/news/13169.html

相关文章:

  • 论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(三)
  • SecureCRT 中使用 `crt.Session.Config.SetOption` 方法
  • STM32时钟与GPIO工作模式
  • LeetCode:912归并排序,洛谷:ACM风格
  • Manus AI 与多语言手写识别
  • 论文笔记:LANGUAGE MODELS REPRESENT SPACE AND TIME
  • 【HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解
  • 1、ZYNQ 开篇简介
  • 向量数据库Milvus在windows环境下的安装
  • SQL进阶之旅 Day 24:复杂业务场景SQL解决方案
  • Unity实现不倒翁
  • Dispatch PDI(DPDI)kettle调度管理平台稳定版本,正式登场!
  • Nuxt + Pinia + Element Plus 后台管理系统搭建教程(含源码)
  • CMake测试find_package()命令的相关原理
  • 10- AI大模型-LangChainV0.3应用(一) - 简介,模型调用,prompt模板,输出解析器
  • 6.10
  • Vue.js 中的 v-bind 指令详解
  • Vue 模板语法之指令语法详解
  • 深入解析 GitHub Token 与 NPM Token:自动化发布的完整指南
  • 医学图像分割最新进展
  • 苹果签名应用掉签频繁原因排查,以及如何避免
  • WebRTC 中 ICE 流程优化:SRS 轻量级部署与 NAT 类型检测实战
  • 项目管理三要素有哪些?如何实现项目管理的三要素平衡
  • 题单:归并排序
  • DSP——时钟树讲解
  • 使用联邦学习进行CIFAR-10分类任务
  • 消防车辆管理系统:为消防公车筑牢安全与效率防线
  • 磐维数据库的权限使用
  • spark数据处理练习题番外篇【下】
  • 统计学核心概念与现实应用精解(偏机器学习)