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

简介: 盛最多水的容器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


相关文章
|
2月前
|
Java 虚拟化 容器
(Java)Java里JFrame窗体的基本操作(容器布局篇-1)
容器 容器,我的理解是可以包容其他东西的玩意。它可以是一个盒子,可以是一个虚拟化的物品,可只要能包裹住其他存在质体的东西,那么都可以称作是容器。例如:JPanel组件和JScollPane组件两者都是容器也是组件。 既然有容器,那么容器中的布局就必不可少了。不然不规矩的摆放物品,人类看不习惯,我也看不习惯 ???? 本篇内容,将说明java JFrame窗体里容器中几类布局。 说明:所有在JFrame窗体里的容器布局都会使用setLayout()方法,采用的布局参数都将放进这个方法里 绝对布局 调用窗体容器
118 1
|
6月前
|
存储 缓存 安全
Java 集合容器常见面试题及详细解析
本文全面解析Java集合框架,涵盖基础概念、常见接口与类的特点及区别、底层数据结构、线程安全等内容。通过实例讲解List(如ArrayList、LinkedList)、Set(如HashSet、TreeSet)、Map(如HashMap、TreeMap)等核心组件,帮助读者深入理解集合容器的使用场景与性能优化。适合准备面试或提升开发技能的开发者阅读。
120 0
|
6月前
|
缓存 Java API
Java 集合容器实操技巧与案例详解
本教程基于Java 8+新特性和现代开发实践,深入讲解Java集合容器的实操技巧。通过具体场景演示Stream API数据处理、ConcurrentHashMap并发控制、LinkedHashMap实现LRU缓存、TreeSet自定义排序等高级特性。同时涵盖computeIfAbsent优化操作、EnumMap专用集合使用、集合统计与运算(交集、并集、差集)等内容。代码示例丰富,助力掌握高效编程方法。[点击获取完整代码](https://pan.quark.cn/s/14fcf913bae6)。
89 0
|
Kubernetes Cloud Native Java
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
|
10月前
|
存储 安全 算法
Java容器及其常用方法汇总
Java Collections框架提供了丰富的接口和实现类,用于管理和操作集合数据。
191 2
Java容器及其常用方法汇总
|
Java Linux Maven
java依赖冲突解决问题之容器加载依赖jar包如何解决
java依赖冲突解决问题之容器加载依赖jar包如何解决
|
11月前
|
监控 Java 中间件
8G的容器Java堆才4G怎么就OOM了?
本文记录最近一例Java应用OOM问题的排查过程,希望可以给遇到类似问题的同学提供参考。
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
消息中间件 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
375 4
|
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容器编排
374 3