【LeetCode-中等题】11. 盛最多水的容器

题目

题解一:双指针法

思路:

题目中的示例为:

在初始时,左右指针分别指向数组的左右两端,它们可以容纳的水量为 min⁡(1,7)∗8=8

此时我们需要移动一个指针。移动哪一个呢?应该移动对应数字较小的那个指针(即此时的左指针)。这是因为,由于容纳的水量是由

所以,我们将左指针向右移动:

此时可以容纳的水量为 min⁡(8,7)∗7=49。由于右指针对应的数字较小,我们移动右指针:

此时可以容纳的水量为 min⁡(8,3)∗6=18,由于右指针对应的数字较小,我们移动右指针:

此时可以容纳的水量为 min⁡(8,8)∗5=40,两指针对应的数字相同,我们可以任意移动一个,例如左指针:

最后左指针大于右指针的时候,就是循环结束的条件

动图可以参考:盛最多水的容器

代码:

java 复制代码
class Solution {
    public int maxArea(int[] height) {

    //解法:双指针法
    int pre = 0;
    int bef = height.length-1;
    //记录每次计算的最大面积
    int maxeare = 0;

    while(pre < bef){
      int crueare = (Math.min(height[pre],height[bef]))*(bef - pre);//记录此刻的两个指针向的区域的面积
      maxeare = Math.max(crueare,maxeare);//刷新最大面积
      //让指向小的数,移动指针;
      if(height[pre]<height[bef])  
          pre = pre + 1;
      else
          bef = bef - 1;
    }
   return maxeare;
   }
}
相关推荐
铅笔侠_小龙虾1 分钟前
Rust 学习(2)-变量、常量与 shadowing
学习·算法·rust
AI科技星7 分钟前
基于全域数学公理体系的三元极值题最简求解法【乖乖数学】
线性代数·算法·游戏·决策树·机器学习·乖乖数学·全域数学
恣逍信点25 分钟前
《凌微经》通俗解读——哲学第一因
学习·职场和发展·创业创新·学习方法·业界资讯·交友·哲学
大鱼>41 分钟前
宠物异常行为预警系统:边缘计算与实时检测
人工智能·深度学习·算法·iot·宠物
apcipot_rain2 小时前
某双非机试真题
算法
米尔的可达鸭2 小时前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构
tachibana22 小时前
hot100 课程表(207)
java·数据结构·算法·leetcode
神仙别闹2 小时前
编写基于C++ Huffman 算法的无损压缩程序和解压程序
java·c++·算法
大鱼>2 小时前
宠物活动轨迹追踪系统:GPS/BDS+UWB+BLE多定位融合方案
人工智能·深度学习·算法·iot·宠物
闲研随记3 小时前
【文献阅读 ICML 2026】RL算法:R2VPO
论文阅读·人工智能·算法·强化学习·icml·rl算法