算法004:盛水最多的容器

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。icon-default.png?t=N7T8https://leetcode.cn/problems/container-with-most-water/

这道题比较简单,使用双指针。

要求的是最大面积,对于一个水桶(水杯来说),面积的算法是固定的,就是底乘以高。

在这个题中,我们把左边的位置设为left,右边的位置设为right,那么四边形的底就是(right-left)

高就是height[left]或者是height[right]。只需要用Math函数找出这两个数最小的一个值就可以了。

核心的部分:

对于上面两个图来说,哪个图的蓝色面积更大呢?上图宽一些,但是矮一些;下图窄一些,但是高一些。其实我们只需要判断left和right的高度,哪边高度更低,就把哪边向中间移动一次。

之后再跟原来的面积进行对比,如上面第一个图,右边right矮一些,就把right向左移动1,此时得到新的面积再跟原来的比较。一直到最后两个指针相遇,就能知道最大的面积是多少。

class Solution {
    public int maxArea(int[] height) {
        int left = 0;
        int right = height.length - 1;
        int ret = 0;

        while(left < right)       {
            int v = Math.min(height[left],height[right]) * (right - left);
            ret = Math.max(ret,v);
            if(height[left] < height[right]){
                left++;
            }else{
                right--;
            }
        }
        return ret;
    }
}

相关推荐

  1. 11. 容器

    2024-06-09 03:04:02       40 阅读

最近更新

  1. TCP协议是安全的吗?

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

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

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

    2024-06-09 03:04:02       20 阅读

热门阅读

  1. SELinux:安全增强型Linux

    2024-06-09 03:04:02       9 阅读
  2. 嵌入式C中Hex与Bin文件对比分析

    2024-06-09 03:04:02       11 阅读
  3. 数据结构学习笔记-二叉树

    2024-06-09 03:04:02       9 阅读
  4. Python使用Flask构建简单的web应用

    2024-06-09 03:04:02       10 阅读
  5. 深度学习 - softmax交叉熵损失计算

    2024-06-09 03:04:02       10 阅读
  6. 代码杂谈 之 pyspark如何做相似度计算

    2024-06-09 03:04:02       13 阅读
  7. B3928 [GESP202312 四级] 田忌赛马

    2024-06-09 03:04:02       9 阅读
  8. 发布处理方案 —— 前台项目构建与发布处理

    2024-06-09 03:04:02       9 阅读