栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode:11.盛最多水的容器(java看完必会)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode:11.盛最多水的容器(java看完必会)

1.题目

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

说明:你不能倾斜容器。

2.思路

用双指针来解决这个问题。一个指向容器的左边界(x),一个指向容器的右边界(y),题目说的是盛水,那么只能以(x, y)中最小的作为高了,那么底就是容器两边界的距离,假设用t表示,容器的面积为area = min(x,y)*t 。题目要求的是盛最多水的容器,也就是要找到面积最大的。

起初x指向的是数组起点,y指向的是数组最右边,求此时容器的面积,假设容器最大面积为0,将两个面积相比,记录下最大的。然后移动高最小的那个指针,如果x小于y的话,就x++,如果y

那么这里就有一个问题了,为什么是移动最高最小的指针?假设x=x, 还是y1 3.答案

class Solution {
    public int maxArea(int[] height) {
        //采用双指针的思想,一个代表左边界,一个代表有边界
        int l=0;
        int r=height.length-1;
        int mArea=0; //代表面积

        //只有左指针=右指针后才算结束
        while(l
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293057.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号