美文网首页
【11】盛最多水的杯子

【11】盛最多水的杯子

作者: 天色将变 | 来源:发表于2020-05-22 10:58 被阅读0次
题目描述

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器,且 n 的值至少为 2。

image.png

图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

示例

输入:[1,8,6,2,5,4,8,3,7]
输出:49

解答

双指针法

void main() {
  int result = maxArea([10, 8, 6, 2, 5, 4, 8, 3, 7]);
  print(result);
}

int maxArea(List<int> heights) {
  if (heights == null || heights.length < 2) {
    return 0;
  }
  int max = 0;
  int left = 0;
  int right = heights.length - 1;
  while (left < right) {
    int area = (right - left) *
        (heights[left] > heights[right] ? heights[right] : heights[left]);
    if (max < area) {
      max = area;
    }
    heights[left] > heights[right] ? right-- : left++;
  }
  return max;
}

相关文章

  • 【11】盛最多水的杯子

    题目描述 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 ...

  • 贪心

    题目 一、11. 盛最多水的容器

  • LeetCode-11 盛最多水的容器

    题目:11. 盛最多水的容器 难度:中等 分类:数组 解决方案:双指针 今天我们学习第11题盛最多水的容器,这是一...

  • 11、盛水最多的容器

    如题 这道题用暴力破解的方法不难,但是在时间复杂度太高,容易出现超时情况。这里我参考官方给出的思路,用Python...

  • #11 盛最多水的容器

    >给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线...

  • 11.盛最多的水

    题意:给出一个数组表示一个容器,数组中的每个数字表示容器中每个柱子的高度,每两根柱子中的间距为1,问该容器最大的盛...

  • 11:盛最多容器的水

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

  • leetcode-11 Container With Most

    title: "leetcode-11 Container With Most Water 盛最多水的容器" 我的...

  • 11.盛最多水的容器

    题目 思路1.取左右两侧数字2.依次向内取最大的3.右侧下标等于左侧时停止代码

  • 11.盛最多水的容器

    给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直...

网友评论

      本文标题:【11】盛最多水的杯子

      本文链接:https://www.haomeiwen.com/subject/fotqahtx.html