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

11. 盛最多水的容器

时间:2023-04-27 10:48:40浏览次数:53  
标签:11 容器 right int res height vol 最多水 left

11. 盛最多水的容器
看了下数据量, 暴力法肯定是性不同
使用双指针, 关键在于首先选取两端, 由于短板效应, 移动长板后, 容量肯定是不会增加的; 故每次都移动短板

class Solution {
public:
    int maxArea(vector<int>& h) {
        //max(h[i],h[j])*(j-i) 
        //两根指针, 分别指向第首位两条线
        int left = 0;
        int right = h.size()-1;
        //计算某两根线间可以容纳的水 认为此时就是最多
        int vol = (right-left)*min(h[left],h[right]);
        while(left != right)
        {
            //移动较短的那根才有可能更多
            (h[left]<h[right])?left++:right--;
            //如果水更多,就更新容量
            int vol_new = (right-left)*min(h[left],h[right]);
            vol = (vol_new>vol)?vol_new:vol;
        }
        return vol;
    }
};

转一个优雅的代码, 虽然运行速度和消耗内存都差不多

class Solution {
public:
    int maxArea(vector<int>& height) {
        int i = 0, j = height.size() - 1, res = 0;
        while(i < j) {
            res = height[i] < height[j] ? 
                max(res, (j - i) * height[i++]): 
                max(res, (j - i) * height[j--]); 
        }
        return res;
    }
};

作者:jyd
链接:https://leetcode.cn/problems/container-with-most-water/solution/container-with-most-water-shuang-zhi-zhen-fa-yi-do/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:11,容器,right,int,res,height,vol,最多水,left
From: https://www.cnblogs.com/Long23/p/17358237.html

相关文章

  • 使用eclipsefdn/hugo-node容器构建hugo静态站点
    eclipsefdn/hugo-node容器是一个基于Node.js和Hugo的Docker容器,用于构建和部署静态网站。它包含了Hugo和Node.js的环境,可以方便地进行网站的开发、构建和部署。使用eclipsefdn/hugo-node容器可以简化网站开发和部署的流程,具体步骤如下:安装Docker在使用eclipsefdn/hugo-node容......
  • 「CF1188E」Problem from Red Panda
    题目点这里看题目。给定一个长度为\(k\)的非负整数序列\(a\)。你可以对于\(a\)做如下操作任意次:选定\(1\lej\lek\),满足除了\(a_j\)外\(a\)中其它数都为正。而后,令\(a_j\)加上\(k-1\),令除了\(a_j\)外\(a\)中其它数减去\(-1\)。(这样一次操作被称为“操......
  • 11
     #include<iostream>#include<math.h>usingnamespacestd;intmain(){intx1,x2,x3,x5,x8,b[10];doublea,max=0.0;for(x8=0;x8<=2;x8++){//穷举法找到符合条件的结果从其中一个进行将下一个进行20减去前一个的年数for(x5=0;x5<=(20-8*x8)/5;x5++){for(x3=0;x3<=(20-8*x8-5*x5......
  • 1137. 第 N 个泰波那契数
     分析;跟上道题一样,只不过变成了前三个状态的和直接给出代码,一次性过 代码:1classSolution(object):2deftribonacci(self,n):3"""4:typen:int5:rtype:int6"""7ifn==0:8return0......
  • 打卡11
    三色球问题#include<stdio.h>intmain(){ intm,n,number=0; printf("红球白球黑球\n"); printf("......................\n"); for(m=0;m<=3;m++){ for(n=0;n<=3;n++){ if((8-m-n)<=6){ printf("%2d:......
  • 911s5倒闭后做海外调查问卷还有好用的海外ip代理吗?
    911s5这家知名的海外ip代理宣布倒闭,这给海外调查问卷和其他需要海外ip代理的业务带来了一定的影响。许多行业的从业者在911s5代理倒闭之前,大多数人都使用它的代理服务。然而,现在911s5的退出让许多人感到手足无措。在过去,911s5代理平台在做海外调查问卷方面表现卓越,因此市场上目前......
  • c++11/14线程池
    c++11//#pragmaonce#include<iostream>#include<thread>#include<memory>#include<vector>#include<queue>#include<functional>//std:;function#include<future>//std::pac......
  • window10|window11下 ubuntu 安装docker 和docker-compose 流程
    一、先决条件1.要成功安装DockerDesktop,您必须:满足系统要求拥有64位版本的UbuntuJammyJellyfish22.04(LTS)或UbuntuImpishIndri21.10。x86_64DockerDesktop在(或)架构上受支持amd64。对于非Gnome桌面环境,gnome-terminal必须安装:$sudoaptinstallgnom......
  • 解决的Windows11的反人类<一>——任务栏强制合并问题
    开始前,先干一次微软的UI设计,脑子有泡的*****设计师,F******U!干完微软,进入正题。。。。0)、需要的工具——dxgi.dll,下载→ https://pan.baidu.com/s/1dZCoM4m7gxg-dTEt1DslzA提取码:8d5w ;1)、dxgi.dll放入“C:\Windows”目录下;2)、打开任务管理器重启“Windows资源管理......
  • 山东大学数据结构实验11 搜索树
    描述创建带索引的二叉搜索树类。存储结构使用链表,提供操作:插入、删除、按名次删除、查找、按名次查找、升序输出所有元素。格式输入格式输入第一行一个数字m(m<=1000000),表示有m个操作。接下来m行,每一行有两个数字a,b:当输入的第一个数字a为0时,输入的第二个数字b表示......