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

盛最多水的容器

时间:2024-11-04 21:22:11浏览次数:1  
标签:容器 边界 int height result 最多水 Math

盛最多水的容器

题目

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0)(i, height[i])

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

示例

思路

  • 保存的水的容量只和选中的左右边界的较短的一边和这两个边界的距离有关,所以依次遍历就好
  • 初始左边界为0,右边界为height.length - 1
  • 每次能容纳的水为Math.max(result, Math.min(height[l], height[r]) * (r - l))
  • 计算完此次选中的边界后,需要继续移动,移动的规则是
    • 如果左边界小于右边界,那么左边界加一,只有这样才有可能得到更大的容积,因为短板在较短的一边,将将短的一边代替掉才有可能更好(也可能变差)
    • 如果左边界大于右边界,那么右边界减一,同理向上

代码

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

标签:容器,边界,int,height,result,最多水,Math
From: https://www.cnblogs.com/wwgroup/p/18526391

相关文章

  • PVE容器直通显卡教程
    intel、amd、nvidia的显卡均可以直通,并且该直通是共享,不是独占,也即所有容器都可以同时使用这些显卡,同时性能没有损耗。创建容器取消勾选无特权的容器,即unprivilegedcontainer查看显卡文件$ls-l/dev/dri/crw-rw----1rootvideo226,0Dec2911:20card0crw-rw---......
  • Java路线图:Java基础入门、Java核心技术、JVM和性能优化、web服务器、web开发框架、消
    准备下载、配置Maven下载、安装IntelliJIDEA准备一个GitHub仓库(或者码云),管理Java源代码Java基础入门1)基本数据类型8种基本数据类型(boolean、char、byte、short、int、long、float、double)整形中byte、short、int、long的取值范围单精度和双精度为什么不能使用......
  • 【C++篇】跨越有限与无限的边界:STL之set容器中的自我秩序与无限可能
    文章目录C++`set`容器详解:秩序与高效的数据管理前言第一章:C++`set`的概念1.1`set`的定义1.2`set`的特点第二章:`set`的构造方法2.1常见构造函数2.1.1示例:不同构造方法2.2相关文档第三章:`set`的常用操作3.1插入操作详解3.1.1使用`insert()`插入元素3.1......
  • 关联容器笔记
    关联容器总结有序关联容器键值的顺序自动排序,键值必须支持<操作符底层数据结构使用平衡树,比如(红黑树)增删查的平均时间复杂度接近O(log⁡n)种类std::set:集合,包含唯一的键元素。std::multiset:多重集合,允许键重复。std::map:映射,键值对(键唯一,值可以重复)。std::m......
  • 顺序容器对比
    顺序容器vector特点动态数组内存是连续的以二倍大小进行扩容,其中reserve只进行空间的预留不创建元素而resize既修改空间大小又改变元素个数deque的特点底层为二维动态数组第二维数组空间大小固定扩容时,第一维数组的二倍进行扩容该二维数组的内存并不是连续的list的特点......
  • C++ STL常用容器之set
    文章目录一、集合set二、所需的头文件三、基本访问操作3.1插入元素3.2删除元素3.3查找元素3.4其他函数四、无序集合unordered_set五、multiset六、unordered_multiset七、使用set容器八、map与set的区别一、集合setset称为集合,是一个内部自动有序且不含重复元素......
  • 【STL_list 模拟】——打造属于自己的高效链表容器
    一、list节点​list是一个双向循环带头的链表,所以链表节点结构如下: template<classT> structListNode { Tval; ListNode*next; ListNode*prve; ListNode(intx) { val=x; next=prve=this; } };二、list迭代器2.1、list迭代器与vector......
  • 【C知道】容器化技术
    C知道  你对容器化技术有何理解?容器化技术是一种软件打包和部署的方法,它将应用程序及其依赖项封装在一个轻量级、独立的运行环境中,通常称为“容器”。比如Docker就是一个流行的容器平台,它允许开发者打包应用及其配置到一个镜像中,这个镜像可以在任何支持该技术的操作系统上......
  • 解决docker安装minio容器时,minio容器启动几秒后自动退出的一种方法
    笔者在部署minio容器时,遇到了以上问题。起初以为是我端口被占用或存储空间不足,经过检测排除了以上问题。以下是最初的安装命令:dockerrun-d--nameminio--restart=always-p9000:9000-e"MINIO_ACCESS_KEY=minio"-e"MINIO_SECRET_KEY=minio123"-v/home/data:/data-v/......
  • CPP学习 用栈容器解决问题示例,判断括号是否成对出现
    #include<string>#include<iostream>#include<stack>usingnamespacestd;boolisbalanced(conststring&str){intlen=str.size();stack<char>mystack;for(inti=0;i<len;i++){if(str[i]==&......