盛最多水的容器Java版(力扣)

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 盛最多水的容器Java版(力扣)


盛最多水的容器


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

说明:你不能倾斜容器。

1.png


示例 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


题意:其实就是求两个柱子之间的最大面积。


思路:从两边分别向里面遍历,哪边的柱子矮就移动这一侧的柱子向内移动,这样就可以保证移动后的面积会大于等于当前的面积。


详细题解:官方题解


正确代码:

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

完整代码(含测试样例):


package com.Keafmd.April.day13;
/**
 * Keafmd
 *
 * @ClassName: ContainerWithMostWater
 * @Description: 盛最多水的容器 https://leetcode-cn.com/problems/container-with-most-water/
 * @author: 牛哄哄的柯南
 * @Date: 2021-04-13 9:30
 * @Blog: https://keafmd.blog.csdn.net/
 */
public class ContainerWithMostWater {
    public static void main(String[] args) {
        Solution0413 solution0413= new Solution0413();
        int [] height = {1,3,2,5,25,24,5};
        int re = solution0413.maxArea(height);
        System.out.println("re = " + re);
    }
}
class Solution0413 {
    public int maxArea(int[] height) {
        int l=0,r= height.length-1;
        int ans=0;
        while(l<r){
            int maxx=(r-l)*Math.min(height[l],height[r]);
            ans =Math.max(maxx,ans);
            if(height[l]<= height[r]){
                l++;
            }else {
                r--;
            }
        }
        return ans;
    }
}

输出结果:


re = 24
Process finished with exit code 0


相关文章
|
4月前
|
Kubernetes Cloud Native Java
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
|
4月前
|
Java Linux Maven
java依赖冲突解决问题之容器加载依赖jar包如何解决
java依赖冲突解决问题之容器加载依赖jar包如何解决
|
2月前
|
消息中间件 NoSQL Kafka
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
Flink-10 Flink Java 3分钟上手 Docker容器化部署 JobManager TaskManager Kafka Redis Dockerfile docker-compose
50 4
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
77 3
|
4月前
|
安全 算法 Java
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
这篇文章讨论了Java集合类的线程安全性,列举了线程不安全的集合类(如HashSet、ArrayList、HashMap)和线程安全的集合类(如Vector、Hashtable),同时介绍了Java 5之后提供的java.util.concurrent包中的高效并发集合类,如ConcurrentHashMap和CopyOnWriteArrayList。
【Java集合类面试二】、 Java中的容器,线程安全和线程不安全的分别有哪些?
|
4月前
|
Java 容器
【Java集合类面试一】、 Java中有哪些容器(集合类)?
这篇文章列出了Java中的四大类集合接口:Set、List、Queue和Map,以及它们的常用实现类,如HashSet、TreeSet、ArrayList、LinkedList、ArrayDeque、HashMap和TreeMap。
【Java集合类面试一】、 Java中有哪些容器(集合类)?
|
4月前
|
Java 测试技术 数据库
容器镜像解析问题之解析 Java 应用依赖时识别 jar 包如何解决
容器镜像解析问题之解析 Java 应用依赖时识别 jar 包如何解决
29 0
|
4月前
|
存储 安全 Java
【Java 第四篇章】流程控制、容器
本文档详细介绍了Java中的流程控制、集合类型、数组声明及容器的声明与遍历等内容。在流程控制部分,包括了if、if...else、if...else if...else、switch等语句的使用方法,并提供了具体示例。接着,文档对比分析了Java中单列集合(如HashSet、LinkedHashSet、TreeSet等)与双列集合(如HashMap、LinkedHashMap、Hashtable等)的特点及底层实现原理。此外,还介绍了如何声明与初始化数组,并提供了多种循环结构的使用示例。最后,通过具体的代码示例展示了不同集合类型的声明、基本操作(如添加、删除、更新、查找)以及遍历方法。
24 0
|
5月前
|
Java Scala 流计算
实时计算 Flink版产品使用问题之Docker镜像中的Java路径和容器内的Java路径不一致,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。