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

11. 盛最多水的容器

时间:2023-04-07 19:56:28浏览次数:45  
标签:11 容器 int 复杂度 height 最多水 指针

题目链接:11. 盛最多水的容器

方法:相向双指针

解题思路

  • 根据题目要求,\(2 <= n <= 10^5\),可知如果使用暴力求解,显然会超时。
  • 使用双指针算法可以大大缩短时间复杂度,取 \([i, j]\) 双指针,初始化为 $i = 0, j = n - 1, i < j, $ 最大面积 \(s = 0;\)
  • 假设某时 \(height[i] <= height[j]\),则比 \([i, j]\) 区间能够找出更大面积的区间应该为 \([i + 1, j]\),反之为 \([i, j - 1]\)。因为以 \(height[i]\) 为边所能组成的最大面积就是 \(height[i] * (j - i)\),要想面积更大只能在 \([i + 1, j]\) 中选取。

代码

class Solution {
public:
    int maxArea(vector<int>& height) {
        int s = 0;
        for (int i = 0, j = height.size() - 1; i < j; ) {
            s = max(s, min(height[i], height[j]) * (j - i));
            if (height[i] <= height[j]) i ++ ;
            else j -- ;
        }
        return s;
    }
};

复杂度分析

时间复杂度:\(O(n)\);
空间复杂度:\(O(1)\)。

标签:11,容器,int,复杂度,height,最多水,指针
From: https://www.cnblogs.com/lxycoding/p/17297184.html

相关文章

  • vmware中安装windows11系统
    1、官网下载windwos11镜像(点击跳转下载)  2、打开vmware,创建新的虚拟机3、选择典型方便快捷 4、选择安装程序光盘文件,点击浏览选择刚刚下载好的iso镜像5、选择windows版本号我的vmware是16版本没有windwos11选项直接选择最新windows10X64版本 6、命名存放位置根据自......
  • Java多版本切换 8-11-17
    Java版本切换在A:\DevEnvironment\javaVersion目录下,创建Windows命令脚本Java8.bat @echooff setJAVA_HOME=A:\DevEnvironment\jdk-1.80_152 setPath=%JAVA_HOME%\bin;%Path% echoVersionhasbeenswitchedtoJava8.Java11.bat @echooff setJAVA_HOME=A:\DevE......
  • leetcode-1109-差分
    classSolution{publicint[]corpFlightBookings(int[][]bookings,intn){int[]diff=newint[n];for(int[]booking:bookings){intfirst=booking[0],last=booking[1],seats=booking[2];diff[first-1]......
  • 向运行中的docker容器添加挂载磁盘
    需求容器跑了一段时间,空间不足,需要扩容。传统方法需要commit成新的image然后重新run添加-v进行挂载容器使用了很长时间,数据较多打包不方便,希望热添加。实现以下命令在root权限下执行sudo-i#找到当前容器my_container的iddockercontainerinspectmy_container|grep"......
  • STL 容器简介
    STL常用容器string字符串常用成员方法vector向量常用成员方法deque队列常用成员方法stack栈常用成员方法queue队列常用成员方法list链表常用成员方法set/multiset集合常用成员方法map/multimap映射常用成员方法......
  • 113. 路径总和ii
    给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum=22classSolution{private:voiddfs_find(TreeNode*cur,intsum,inttargetSum,vector<int>&path,v......
  • 用 Go 剑指 Offer 11. 旋转数组的最小数字
    已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,4,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,7,0,1,4]若旋转7次,则可以得到[0,1,4,4,5,6,7]注意,数组[a[0],a[1],a[2],...,a[n-1]]旋转一次的结果为数......
  • 容器启动的 node-exporter 无法监控宿主机磁盘使用率
    一、现象容器启动 node-exporter,在grafana界面显示的磁盘使用率不对监控页面显示:   磁盘实际情况  二、原因容器启动默认监控的是容器本身的磁盘,对宿主机没有权限获取磁盘权限。已知NodeExporter主要通过读取/proc和/sys来获取监控指标,但是容器和宿主机的/pr......
  • UVA - 116 Unidirectional TSP 多段图的最短路
    题目大意:给出一个矩阵,要求每列都要路过,起点必须是第一列,求经过的最短路径的上面的数字和最小解题思路:公式为d[i][j]=min(d[i][j+1],d[i+1][j+1],d[i-1][j+1])+a[i][j],本题要注意,因为可以从最上面一行到最后一行,或者从最后一行到第一行,注意i的变化#include<cstdio>#include<alg......
  • K8S 高可用外部 etcd , Docker 容器运行时 (三) 加入K8S集群
    control-plane上执行1、#证如果过期了,可以使用下面命令生成新证书上传,这里会打印出certificatekey,后面会用到kubeadminitphaseupload-certs--upload-certs#你还可以在【init】期间指定自定义的--certificate-key,以后可以由join使用。要生成这样的密钥,可以使用以下......