11. 盛最多水的容器(c++题解)

news2024/11/17 14:22:07

11. 盛最多水的容器(c++题解)

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。

示例 1:

在这里插入图片描述
输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

示例 2:

输入:height = [1,1]
输出:1

提示:
n == height.length
2 <= n <= 10^5
0 <= height[i] <= 10^4

思路

这道题最开始的思路只有暴力解,就是用两个for循环来一个一个试,但是结果发现这样是错的。后续改进的方法就是双指针,也就是两个指针l,r分别指向最左边和最右边,两个指针对应的垂线较小的指针想前移动,这样就能保证每次移动的都是较小的指针,两者之间的面积也会不断的找到最大的情况。

复杂度

时间复杂度:
O(n)

空间复杂度:
O(1)

Code

C++

// 双重for循环的做法,结果超时了
// class Solution {
// public:
//     int maxArea(vector<int>& height) {
//         int max=0;
//         for(int i=0;i<height.size();i++){
//             for(int j=i+1;j<height.size();j++){
//                 int h = min(height[i],height[j]);
//                 int s=h*(j-i);
//                 if(s>max){
//                     max=s;
//                 }
//             }
//         }
//         return max;

//     }
// };


//双指针的方法
class Solution {
public:
    int maxArea(vector<int>& height) {
        int max=0,s=0;
        int l=0,r=height.size()-1;
        while(l<r){
            if(height[r]>height[l]){
                s=height[r]*(r-l);
                r--;
            }
            else{
                s=height[l]*(r-l);
                l++;
            }
            if(max<s) max=s;
        }
        return max;

    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/934778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【linux进程概念】

目录&#xff1a; 冯诺依曼体系结构操作系统进程 基本概念描述进程-PCBtask_struct-PCB的一种task_ struct内容分类组织进程查看进程 fork()函数 冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺…

[C++] STL_vector 迭代器失效问题

文章目录 1、前言2、情况一&#xff1a;底层空间改变的操作3、情况二&#xff1a;指定位置元素的删除操作4、g编译器对迭代器失效检测4.1 扩容4.2 erase删除任意位置&#xff08;非尾删&#xff09;4.3 erase尾删 5、总结 1、前言 **迭代器的主要作用就是让算法能够不用关心底…

【业务功能篇85】微服务-springcloud-Nginx-反向代理-网关

Nginx域名 1.hosts文件 在c:/window/system32/drivers/etc/hosts文件&#xff0c;我们在这个文件中添加 192.168.56.100 msb.mall.com注意如果是没有操作权限&#xff0c;那么点击该文件右击属性&#xff0c;去掉只读属性即可 通过这个域名访问到Nginx服务 2.Nginx的方向代…

[GDOUCTF 2023]EZ WEB

进入环境有一个点击标签&#xff0c;点击 后触发提示&#xff0c;flag就在附近 习惯性查看源码&#xff0c;得到路径提示 访问后&#xff0c;得到源码&#xff0c;源码中存在三个路由&#xff0c;前两个都是GET方式&#xff0c;已经访问过了&#xff0c;最后一个PUT是什么请求…

MQ-整体回顾

one 异步、解耦、削峰 two 深入理解核心编程模型及消息应用场景 主要通过多了QUEUE进行交换消息 虚拟机的消息是不能发到另外虚拟机的Queue上的 生产者创建connection建立连接通过connection声明channel信道通过channel声明队列声明好队列后发送消息消费者拿到connectio…

SketchBook软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 SketchBook是一款由Autodesk公司开发的绘画和绘图软件&#xff0c;它适用于各种操作系统和平台&#xff0c;如Windows、macOS、iOS和Android等。 SketchBook是一款专业的绘图软件&#xff0c;旨在满足各种绘画和绘图需求。它提…

无涯教程-聚类算法 - K-Means

K-均值聚类算法计算质心并进行迭代&#xff0c;直到找到最佳质心为止&#xff0c;它假定群集的数目是已知的&#xff0c;它也称为扁平聚类算法。通过算法从数据中识别出的簇数以K均值中的" K"表示。 在该算法中&#xff0c;将数据点分配给群集&#xff0c;以使数据点…

Linux page migration源码分析

目录 概述 __unmap_and_move函数 step1: Lock the page to be migrated step2: Insure that writeback is complete. step3: Lock the new page that we want to move to. step4: All the page table references to the page are converted to migration entries. st…

Python学习笔记:正则表达式、逻辑运算符、lamda、二叉树遍历规则、类的判断

1.正则表达式如何写&#xff1f; 序号实例说明1.匹配任何字符(除换行符以外)2\d等效于[0-9]&#xff0c;匹配数字3\D等效于[^0-9]&#xff0c;匹配非数字4\s等效于[\t\r\n\f]&#xff0c;匹配空格字符5\S等效于[^\t\r\n\f]&#xff0c;匹配非空格字符6\w等效于[A-Za-z0-9]&…

推荐系统峰会:图与推荐系统

文章目录 图机器学习在京东视频召回中的应用提纲背景图召回架构图业务特色图召回总结 图算法在蚂蚁集团营销推荐场景的应用目录背景基金推荐长尾推荐 图模型在百度推荐系统的实践与思考目录图背景介绍常用算法Feed流图模型演进历程 GNN跨域推荐在微信业务上的应用目录GNN跨域遇…

Linux操作系统--常用指令(文件权限操作类)

(1).文件属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用…

【Git】在idea中多分支开发如何——合并分支、处理冲突

博主简介&#xff1a;22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a;是瑶瑶子啦每日一言&#x1f33c;: “人间总有一两风&#xff0c;填我十万八千梦” 目录 一、背景二、具体操作 一、背景 我当前开发的分支——hfy我想将subject分支的最新代码拉取&…

最新Nmap入门技术

点击星标&#xff0c;即时接收最新推文 本文选自《web安全攻防渗透测试实战指南&#xff08;第2版&#xff09;》 点击图片五折购书 Nmap详解 Nmap&#xff08;Network Mapper&#xff0c;网络映射器&#xff09;是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫…

如何卸载mysql?windows版

查看电脑是否安装过mysql&#xff1a; cmd输入&#xff1a;mysql -V 卸载第一步&#xff1a; 停止Mysql服务&#xff1a;winR 打开运行&#xff0c;输入 services.msc 点击"确定"调出系统服务。 这个进程名为安装MySQL的进程名,是可以更改的,默认为MySQL80 打开控制…

独家采访WizardLM团队,详解WizardCoder/Math超越GPT4/ChatGPT的RLEIF算法

最新消息&#xff01; 在Meta AI发布Code Llama后仅两天的时间&#xff0c;WizardLM 团队基于该模型及其最新的对齐算法训练的WizardCoder-Python 34B V1.0在权威代码生成评测榜单HumanEval上即达到了惊人的 73.2% pass1分值&#xff0c;同时超越了Claude-2&#xff08;71.2%&…

python-下载数据-制作全球地震散点图:JSON格式

查看JSON数据 import json# 探索数据的结构 filename eq_data_1_day_m1.geojson with open(filename) as f:all_eq_data json.load(f)readable_file readable_eq_data.json with open(readable_file, w) as f:json.dump(all_eq_data, f, indent4)json.load() 将数据转换为P…

ExpressLRS开源之接收机固件编译烧录步骤

ExpressLRS开源之接收机固件编译烧录步骤 1. 源由2. 编译步骤2.1 推荐源代码指定方案2.2 方法一&#xff1a;ELRS Configurator步骤一&#xff1a;下载ELRS Configurator工具步骤二&#xff1a;安装ELRS Configurator工具步骤三&#xff1a;使用ELRS Configurator工具进行配置步…

快速启动 - 一键启动您的目标应用

《快速启动》- 快速管理&#xff0c;便捷控制 作为一款管理类应用&#xff0c;《快速启动》拥有简洁且实用的分类功能。它能将你的应用归类&#xff0c;让你轻松找到所需。无论是工具类、娱乐类还是社交类应用&#xff0c;《快速启动》都能让你的手机变得井井有条。 与普通管理…

学霸有特权

导读 同时保有两种截然相反的观念还能正常行事&#xff0c;这是第一流智慧的标志 -- 菲茨杰拉德 周末愉快。 1. 有一次在西湖公园门口等着接娃&#xff0c;凑上来一位并不面善的大汉&#xff0c;低声问我&#xff1a;兄弟你有没兴趣了解下"我主"。 我&#xff1a;可以…

LeetCode--HOT100题(43)

目录 题目描述&#xff1a;98. 验证二叉搜索树&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;98. 验证二叉搜索树&#xff08;中等&#xff09; 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定…