求star

开源不易,喜欢请点个star吧

Ocean Han
233 字
1 分钟
Leetcode->盛水最多的容器
2022-08-16

题目#

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

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

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

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

示例 1:

img

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

示例 2:

输入:height = [1,1]
输出:1

提示:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

解题:key:#

①双指针#

TIP

初始化两个指针在数组的两侧,作为容器的边界,每次计算并移动值较小的指针(容器能装多少水,是由小的那个值决定的)

/**
 * @param {number[]} height
 * @return {number}
 */
var maxArea = function (height) {
    let left = 0, right = height.length - 1
    let maxArea = 0
    while (left < right) {
        let area = Math.min(height[left], height[right]) * (right - left)
        maxArea = Math.max(maxArea,area)
        if(height[left] <= height[right]){
            ++left
        }else{
            --right
        }
    }
    return maxArea
};
Leetcode->盛水最多的容器
https://blog.oceanh.top/posts/algorithm/盛水最多的容器/
作者
Ocean Han
发布于
2022-08-16
许可协议
CC BY-NC-SA 4.0
最后修改时间
2024-08-10 10:08:49