zoukankan      html  css  js  c++  java
  • 盛最多水的容器

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/14399182.html

    盛最多水的容器

    题目链接:https://leetcode-cn.com/problems/container-with-most-water/submissions/

    题目

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

    说明:你不能倾斜容器。

    示例 1:

     

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

    输入:height = [1,1]
    输出:1
    示例 3:

    输入:height = [4,3,2,1,4]
    输出:16
    示例 4:

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

    提示:

    n = height.length
    2 <= n <= 3 * 104
    0 <= height[i] <= 3 * 104

    题解

     如示例1所示,矩形的面积表示盛水的多少,计算面积时,需要注意以短的竖条为边。先假设矩形最大是整个矩形,包含所有竖条,计算矩形面积,取短的竖条为宽,x轴为长,缩短长的大小,取最大的矩形面积。

    代码

    class Solution {
        public int maxArea(int[] height) {
            int left=0;
            int right=height.length-1;
            int len=height.length-1;
            int res=0;
            while(left<right) 
            {
                int ans=(Math.min(height[left],height[right]))*len;
                res=Math.max(res,ans);
                if(height[left]<=height[right])
                {
                    left++;
                }
                else{
                     right--;
                }
                len--;
            }
            return res;
        }
    }

    结果

    出来混总是要还的
  • 相关阅读:
    嵌入式为什么要用Linux操作系统
    SPI 协议的理解
    跳转某指定地址、给某绝对地址赋值
    define 宏定义
    笔试--编程题
    spring 技巧集锦
    spring data jpa auditing
    spring security
    Python基础笔记
    调试EF源代码环境配置
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14399182.html
Copyright © 2011-2022 走看看