【LeetCode】【算法】11. 盛最多水的容器

LeetCode 11. 盛水最多的容器

题目描述

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

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

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

思路

思路:佬的脑子真好用,能借我一天用来面试吗?双指针,两个指针从高度数组两侧不断向中间挪动。当前面积=(双指针的差)*双指针最矮的那块板子,只需要用Math.max求最值即可。接下来不断移动短板。

代码

java 复制代码
class Solution {
    public int maxArea(int[] height) {
        int i = 0, j = height.length - 1, res = 0;
        while (i < j) {
            res = height[i] < height[j] ?
                    Math.max(res, (j - i) * height[i++]) : // i是短板
                    Math.max(res, (j - i) * height[j--]); // j是短板
            // 面积=(底部宽度)*短板高度
            // 求完面积移短板(蕴藏在i++和j--)里了
        }
        return res;
    }
}
相关推荐
墨染点香21 分钟前
LeetCode Hot100 【1.两数之和、2.两数相加、3.无重复字符的最长子串】
算法·leetcode·职场和发展
秋说1 小时前
【PTA数据结构 | C语言版】二叉树层序序列化
c语言·数据结构·算法
地平线开发者1 小时前
开发者说|Aux-Think:为什么测试时推理反而让机器人「误入歧途」?
算法·自动驾驶
Tiny番茄1 小时前
46. 携带研究材料(01背包二维数组)
算法·动态规划
共享家95272 小时前
排序算法实战(上)
数据结构·算法·排序算法
千楼2 小时前
LeetCode 1888. 使二进制字符串字符交替的最少反转次数
算法·leetcode·职场和发展
Shan12052 小时前
经典排序算法之希尔排序
java·算法·排序算法
PixelMind3 小时前
【LLIE专题】通过通道选择归一化提升模型光照泛化能力
图像处理·python·算法·llie·暗光增强
abigale034 小时前
JavaScript数据结构&算法
javascript·数据结构·算法
MuYiLuck4 小时前
【jvm|基本原理】第四天
java·开发语言·算法