首页 > 编程语言 >旅行第三天【算法】双指针-----盛最多水的容器

旅行第三天【算法】双指针-----盛最多水的容器

时间:2024-05-28 21:59:53浏览次数:34  
标签:容器 right int ret height ----- 最多水 指针 left

文章目录

一、题目

请添加图片描述链接:盛最多水的容器
在这里插入图片描述


二、算法原理

首先,这种题可以用暴力解法(枚举每一种容器的大小情况),但是显然会超时(不用尝试啦,我已经试过啦!)请添加图片描述

在这里插入图片描述
请添加图片描述
其次还是咱们的主题----->利用双指针来求解
下面先附上草稿图
在这里插入图片描述

容器面积 = 高度(左右边界的高度【木桶短板效应】)X宽度()

定义一个左边界和一个右边界
通过不断缩小左右区间求出不同容器的大小

而该算法的优点在于:
通过比较左右边界的高度,来使小的边界向内靠近,因为向内靠近会减小区间的宽度,而我们只能移动小的边界来使遇到更大的高度,进而通过max()函数比较当前容器和改变前容器,最后输出得到的容器


三、编写代码

class Solution {
public:
    int maxArea(vector<int>& height) {
        int left = 0;
        int right = height.size()-1;
        int ret = 0;
        
        while(left < right)
        {
            int v = min(height[left],height[right]) * (right-left);//高度*宽度
            ret = max(v,ret);//筛选所有容器中最大的
            //移动指针
            if(height[left]<height[right])//改变容器
            {
                left++;//注意left是++,right是--,不要写成一样的
            }
            else
            {
                right--;
            }
        }
        return ret;
    }
};

请添加图片描述

壁纸上~
在这里插入图片描述

标签:容器,right,int,ret,height,-----,最多水,指针,left
From: https://blog.csdn.net/2301_80161336/article/details/139245857

相关文章

  • 0528-今天的关键词是淡然
    人生就是用来玩和体验的婚姻上学失败迷茫也都是体验而已体验的意义就是不断的去增长我们的智慧这一切的人事物其实都不是你的而是让你拿着用的万物不为我所有但万物皆为我所用所有的东西我们只有使用权但没有绝对的拥有权包括我们的生命也只是阶段性的被我们使用而已最......
  • 06-ADT
    抽象数据类型ADT抽象数据类型与表示独立性:如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在的bug——在client和implementer之间建立“防火墙”ADT特性:表示泄露、抽象函数、表示不变量RepresentationInvariance数学形式描述设计目......
  • 周报 | 24.5.20-24.5.26文章汇总
    为了更好地整理文章和发表接下来的文章,以后每周都汇总一份周报。OpenCV与AI深度学习|YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)-CSDN博客周报|24.5.13-24.5.19文章汇总-CSDN博客DeepDriving|目标检测中的非极大值抑制(NMS)算法_非极大值抑制nms的基本原理......
  • LeetCode/NowCoder-栈和队列OJ练习
    孜孜不倦:孜孜:勤勉,不懈怠。指工作或学习勤奋不知疲倦。......
  • std-软件过程与管理期末复习
    软件过程与管理一、概论1.软件工程的三要素。过程、方法、工具  软件过程的定义。软件过程是用于软件开发及维护的一系列活动、方法及实践3.常见的软件过程分类。常见的软件过程。  二、软件质量管理1.软件质量的定义。  2.ISO/IEC9126的结构、ISO/......
  • 飞凌OKMX8MP-C开发板AI项目分享-搭建YOLO环境
    本文基于在飞凌OKMX8MP-C开发板已经移植好ubuntu进行,编译环境搭建和移植过程可参考前两片文章飞凌OKMX8MP-C开发板AI项目分享-开箱及WSL2编译环境搭建飞凌OKMX8MP-C开发板AI项目分享-移植Ubuntu20.04文件系统体验需要在开发板上安装依赖包,需要保证开发板已经连接到网络,本实......
  • 计算机网络基础-传输层介绍
    目录一、传输层介绍1、传输层概念2、传输层主要功能二、TCP协议1、TCP协议介绍2、TCP报文格式3、TCP的三次握手3.1、TCP三次握手流程图​3.2、TCP三次握手详解4、TCP的四次挥手   4.1、TCP四次挥手流程图   4.2、TCP四次挥手详解 5、TCP常见端口号以......
  • 前后端分离项目登录注册功能的实现----针对前一篇博文的功能升级
    前要说明:        针对上次的项目登录功能想要增加系统的用户信息只能通过自己去数据库中手动添加用户的登录账号信息功能的实现太局限本次添加了用户注册功能,用户可再前端进行手动填写要添加的信息,进而保存到数据进行保存,这样就可以方便了项目进程。重点说明:  ......
  • 容器组件Tabs如何自定义 tabBar-高亮切换
    1.TabBar如果放在底部的话,一般会显示图形和文字,甚至有特殊的图标,如果要实现此类效果,就需要自定义tabBarTabs(){TabContent(){//内容略}.tabBar(this.tabBarBuilder())}@BuildertabBarBuilder(){//自定义的Tabbar结构}2.自定义TabBa......
  • SEO初学指南之关键词研究(1) - 入门
    Hi,我是听风。第一篇给大家科普了什么是SEO以及搜索引擎的原理,这篇文章我们正式进入关键词研究的章节。本片文章将学习什么是关键词以及如何挑选符合预期的关键词。一、什么是SEO关键词简单来说就是用户在搜索引擎中输入的单词和短语或者是句子,以方便他们查询内容来解决问题。......