【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;
   }
}
相关推荐
业精于勤的牙几秒前
模拟退火算法
算法·机器学习·模拟退火算法
罗湖老棍子3 分钟前
【例9.10】机器分配(信息学奥赛一本通- P1266) 机器分配(洛谷P2066)
算法·动态规划·多重背包
roman_日积跬步-终至千里18 分钟前
【计算机视觉(2)】图像几何变换基础篇:从平移旋转到投影变换
人工智能·算法·计算机视觉
0 0 024 分钟前
CCF-CSP 37-3 模板展开(templating)【C++】
c++·算法
im_AMBER25 分钟前
Leetcode 71 买卖股票的最佳时机 | 增量元素之间的最大差值
笔记·学习·算法·leetcode
bulingg27 分钟前
聚类方法(kmeans,DBSCAN,层次聚类,GMM,EM算法)
算法·kmeans·聚类
lally.30 分钟前
Kaggle Binary Classification with a Bank Dataset逻辑回归实现(准确率0.94539)
人工智能·算法·机器学习·逻辑回归
埃伊蟹黄面30 分钟前
二分查找算法
c++·算法·leetcode
野蛮人6号33 分钟前
力扣热题100道之78子集
算法·leetcode·职场和发展
悦来客栈的老板1 小时前
AST反混淆实战|reese84_jsvmp反编译前的优化处理
java·前端·javascript·数据库·算法