首页 > 其他分享 >水最多的容器

水最多的容器

时间:2024-02-03 23:22:47浏览次数:16  
标签:容器 指向 变短 height 水量 指针

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

说明:你不能倾斜容器,且 n 的值至少为 2。

示例:
输入: [1,8,6,2,5,4,8,3,7]
输出: 49

//思路:对撞指针
//假设有左指针和右指针,且左指针指向的值小于右指针的值。
//假如我们将右指针左移,则右指针左移后的值和左指针指向的值相比有三种情况:
//(1)右指针指向的值大于左指针:这种情况下,容器的高取决于左指针,但是底变短了,所以容器盛水量一定变小
//(2)右指针指向的值等于左指针:这种情况下,容器的高取决于左指针,但是底变短了,所以容器盛水量一定变小
//(3)右指针指向的值小于左指针:这种情况下,容器的高取决于右指针,但是右指针小于左指针,且底也变短了,所以容量盛水量一定变小了
// 反之,情况类似。
// 综上所述,容器高度较大的一侧的移动只会造成容器盛水量减小。
// 所以应当移动高度较小一侧的指针,并继续遍历,直至两指针相遇。
class Solution {
    public int maxArea(int[] height) {
        if(height.length<=1){
            return 0;
        }
        int l = 0;
        int r = height.length-1;

        int max = 0;
        while(l<r){
            //如何判断判断时想左以,还是向右移
            int tmp = (r-l)*Math.min(height[l],height[r]);
            if(tmp > max){
                max = tmp;
            }
            if(height[l]<height[r]){
                l++;
            }else{
                r--;
            }
        }
        return max;
    }
}

参考:

标签:容器,指向,变短,height,水量,指针
From: https://www.cnblogs.com/i9code/p/18005401

相关文章

  • Java 8 Optional:优雅处理空指针异常的新型容器
    一、Optional概述1.1Optional定义Optional是Java8中引入的一个类,用于描述一个值不存在的情况。它可以存储任意类型的值,或者表示一个空值。使用Optional类可以避免null值的传递和检查,提高代码的健壮性和可读性。Optional类的定义如下:publicfinalclassOptional<T>{/......
  • 在K8S中,Pod网络访问与Docker容器端口映射有何不同?
    在Kubernetes和Docker原生端口映射之间,主要区别在于:1.Docker原生端口映射:Docker容器在启动时可以通过-p参数指定宿主机端口到容器内部端口的映射,例如:dockerrun-p8080:80nginx,这意味着外部通过宿主机的8080端口可以访问到容器内运行的nginx服务的80端口。Docker使用NAT技......
  • 论虚拟机部署和容器化部署的隔离性区别
    虚拟机部署的隔离性相对容器化部署要好的原因主要涉及到虚拟机和容器技术的底层实现方式。完全隔离:虚拟机:虚拟机通过虚拟化技术模拟整个操作系统,每个虚拟机都有自己的内核、文件系统和网络栈。这意味着虚拟机之间的隔离性非常高,一个虚拟机的问题不会影响其他虚拟机。容器:容器......
  • 在K8S中,pause容器作用是什么?
    在Kubernetes(简称K8S)中,pause容器是每个Pod中的一个基础且至关重要的组成部分。它的主要作用和功能包括:创建共享网络命名空间:pause容器首先启动,并创建一个网络命名空间,所有该Pod内的其他业务容器都加入到这个共享的网络命名空间中。这意味着这些容器可以相互通信就如同它们在......
  • Docker 导出容器到 docker-compose.yml 文件
    Docker导出容器到docker-compose.yml 文件问题:docker-compose.yml文件丢失解决办法:docker的事用docker解决背景:很多容器都是dockerrun运行的,想要转换为docker-compose.yml1.测试备份:dockerrun--rm-v/var/run/docker.sock:/var/run/docker.sockdockerproxy.com/re......
  • Picturesocial | 只要 5 分钟,发现容器编排的秘密武器!
    在上一篇文章《Picturesocial|开发实践:如何在15分钟内将应用容器化》,我们讨论了容器以及容器化应用程序所需的步骤。在不考虑将container部署到哪里的情况下创建container,就像把家放在漂浮在海中的货运集装箱里一样,听起来既浪漫又可怕。如果想过上安全而惬意的生活,肯定需要......
  • 手写docker—构造容器(二)
    Dockerrun命令实现本文需要实现第一个命令Mydockerrun,类似于dockerrun-it[command]命令。通过创建新的Namespace来对新进程进行视图隔离。核心需要解决如下问题:命令行参数解析的问题,具体实现时通过github.com/urfave/cli库来实现对用户输入命令行的解析,需要解析......
  • 容器基本常用命令
    docker命令docke容器安装MySQL命令dockerrun-d\--namemysql\-p3306:3306\-eTZ=Asia/shanghai\-eMySQL_ROOT_PASSWORD=123mysqldockerrun:创建并运行一个容器,-d是让容器在后台运行--namemysql:给容器起个名字,必须唯一-p3306:3306:设置端口映射......
  • 在容器云平台部署服务网格
    服务网格是什么?服务网格(servicemesh)是一个微服务网络,它用于在一个分布式的微服务架构中构成应用程序,并提供不同微服务间的交互功能。当服务网格的规模和复杂性增大时,了解和管理它就会变得非常困难。OpenshiftServicemeshOperator基于开源Istio项目,用于简化Istio的部署和管......
  • Docker私有仓库搭建以及四大容器重启策略
    Docker私有仓库搭建以及四大容器重启策略registry私有仓库  #修改docker配置文件,并重启docker  #dockerrun-itd-v/data/registry:/var/lib/registry-p5000:5000--restart=always--nameregistryregistry:latest-itd:在容器中打开一个伪终端进行交互操作......