leetcode(双指针)11.盛最多水的容器(C++详细解释)DAY9

1.题目

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

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

返回容器可以储存的最大水量。

**说明:**你不能倾斜容器。

示例

在这里插入图片描述

提示

在这里插入图片描述

2.解答思路

两层for循环的做法时间会超时
因此利用双指针进行一遍遍历。

我们要清楚:
每轮向内移动短板,所有消去的状态都 不会导致面积最大值丢失
即:向内移动短板的操作是为了

  • 丢弃不可能的情况(裁剪无效搜索空间),
  • 保留可能的情况(保留有效搜索空间),
  • 然后对所有可能的情况枚举计算(在有效搜索空间中枚举搜索)即可得出结果。

3.实现代码

class Solution {
   
public:
    int maxArea(vector<int>& height) {
   
        int max = 0;//最后结果
        int i = 0, j = height.size()-1;
        int sum = 0; // 临时存放储水量

    while (i < j)
    {
   
        int a = height[i], b = height[j];
        sum = (j - i) * (b > a ? a : b);//计算当下的储水量
        
        /*若height[i]<height[j]时,
        增加i.  反之,减小j
        这个条件一定弄明白,这是关键。
         */
        if (a < b)//逐渐缩小比较范围
        {
   
            i++;
        }
        else
        {
   
            j--;
        }
        max = (sum > max ? sum : max);
    }

        return max;
    }
};

结果

在这里插入图片描述
在这里插入图片描述

4.总结

双指针的变化条件要找准。

双指针的一遍遍历 比 两层for循环的暴力解法快很多。

感冒好了不少了,课本的题正在做,这几天估计就会有更新啦

自信,坚持,upup~

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-14 10:06:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-14 10:06:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-14 10:06:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-14 10:06:02       20 阅读

热门阅读

  1. 数据结构+算法基本知识

    2024-02-14 10:06:02       31 阅读
  2. 【生产实测有效】Linux磁盘清理常用命令

    2024-02-14 10:06:02       31 阅读
  3. C语言静态库深入剖析

    2024-02-14 10:06:02       27 阅读
  4. Python Flask Web 框架学习笔记+完整项目

    2024-02-14 10:06:02       31 阅读
  5. 2024.2.6

    2024.2.6

    2024-02-14 10:06:02      21 阅读
  6. STM32面试相关问题

    2024-02-14 10:06:02       29 阅读
  7. Node.js开发-fs模块

    2024-02-14 10:06:02       26 阅读
  8. Node.js基础---path路径模块

    2024-02-14 10:06:02       28 阅读
  9. MongoDB聚合:$graphLookup

    2024-02-14 10:06:02       26 阅读
  10. 【力扣每日一题】力扣987二叉树的垂序遍历

    2024-02-14 10:06:02       36 阅读
  11. 力扣-28. 找出字符串中第一个匹配项的下标

    2024-02-14 10:06:02       24 阅读