算法---双指针练习-4(盛水最多的容器)

题目

  • 1. 题目解析
  • 2. 讲解算法原理
  • 3. 编写代码

1. 题目解析

题目地址:盛水最多的容器

在这里插入图片描述

在这里插入图片描述

2. 讲解算法原理

在这里插入图片描述

算法的主要思路是使用双指针的方法,通过不断调整指针的位置来计算面积,并更新最大面积。

具体步骤如下:

  • 初始化左指针x为数组的起始位置,右指针y为数组的末尾位置。
  • 2. 进入循环,判断左指针x是否小于右指针y,如果成立,则继续执行下面的步骤。
  • 根据双指针指向的柱子的高度,选取较小的柱子高度作为当前的高度h。
  • 计算当前两个柱子之间的面积,即h * (y - x)。
  • 判断当前面积是否大于最大面积max,如果是,则更新max为当前面积。
  • 6. 根据当前两个柱子的高度判断,如果左指针指向的柱子高度小于右指针指向的柱子高度,则将左指针向右移动一位(x++),否则将右指针向左移动一位(y–)。
  • 重复步骤2至步骤6,直到左指针x不再小于右指针y。
  • 返回最大面积max作为结果。

3. 编写代码

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java二叉树 (2)

&#x1f435;本篇文章将对二叉树的一些基础操作进行梳理和讲解 一、操作简述 int size(Node root); // 获取树中节点的个数int getLeafNodeCount(Node root); // 获取叶子节点的个数int getKLevelNodeCount(Node root,int k); // 获取第K层节点的个数int getHeight(Node r…

基于springboot+vue实现早餐店点餐系统项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现早餐店点餐系统演示 摘要 多姿多彩的世界带来了美好的生活&#xff0c;行业的发展也是形形色色的离不开技术的发展。作为时代进步的发展方面&#xff0c;信息技术至始至终都是成就行业发展的重要秘密。不论何种行业&#xff0c;大到国家、企业&#xff0…

Python实例☞组织结构案例

实例一&#xff1a; ❶要求☞ 使用while循环模拟用户登录 ❷程序代码☞ i1 while i<4: nameinput("请输入您的姓名&#xff1a;") passwardinput("请输入你的密码&#xff1a;") if name"鯨殤" and passward"88888": print(&quo…

VLAN FAQ

如何快速查看所有接口的接口类型和缺省VLAN&#xff1f; 可通过命令display port vlan查看到设备上所有接口的接口类型和缺省VLAN。例如&#xff1a; V200R005及后续版本<HUAWEI> display port vlan Port Link Type PVID Trunk VLAN List --…

高效提升控制效率 | 基于ACM32 MCU的LED灯箱控制器方案

LED灯箱上各种文字、图案有序跳跃、交替辉映&#xff0c;产生强烈的视觉冲击力&#xff0c;被广泛应用于商场、美容美发、宾馆、娱乐场所等地方。 锁存器的工作原理 在LED和数码管显示方面&#xff0c;要维持一个数据的显示&#xff0c;往往要持续的快速的刷新。尤其是在四段八…

HTML 学习笔记(四)图片

<!--通过图片标签"<img src "图片路径">"来调用图片在网页中进行显示--> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthd…

物联网开发 11 ESP32 和 ESP8266 比较有哪些不同?

首先&#xff0c;ESP32和ESP8266都是性价比非常高的Wi-Fi模块&#xff0c;都非常适合用来做物联网&#xff08;IoT&#xff09;领域的项目。两款芯片都属于32位处理器&#xff0c;ESP32是双核160MHz至240MHz CPU&#xff0c;而ESP8266是单核处理器&#xff0c;运行频率为80MHz。…

Gradio快速搭建机器学习模型的wedui展示用户界面/深度学习网页模型部署

Gradio 快速开始 Installation 安装Building Your First DemoSharing Your Demo 分享您的演示 官网 Gradio 是一个开源 Python 包&#xff0c;可让您快速为机器学习模型、API 或任何任意 Python 函数构建演示或 Web 应用程序。然后&#xff0c;您可以使用 Gradio 的内置共享功…

熬过了劫数,生活将会越过越好

人情无常&#xff0c;看开方自在&#xff1b;得失无常&#xff0c;随缘半称心&#xff1b;生命无常&#xff0c;心宽人自安。人生无常&#xff0c;才是世间常态。生命的长短和意外一样&#xff0c;是一件突如其来的事情&#xff0c;我们都无法控制。死亡面前&#xff0c;人永远…

LLM 推理优化探微 (3) :如何有效控制 KV 缓存的内存占用,优化推理速度?

编者按&#xff1a; 随着 LLM 赋能越来越多需要实时决策和响应的应用场景&#xff0c;以及用户体验不佳、成本过高、资源受限等问题的出现&#xff0c;大模型高效推理已成为一个重要的研究课题。为此&#xff0c;Baihai IDP 推出 Pierre Lienhart 的系列文章&#xff0c;从多个…

PHP学习笔记

PHP学习笔记 一.准备环境二.安装Apache添加环境变量 三.安装PHP添加环境变量 配置 apache 支持 php四.安装Mysql配置环境MySQL的访问流程php连接mysql 五虚拟主机虛拟主机的分类搭建基于域名的虚拟主机 一.准备环境 下载Apache 和PHP 安装mysql 特殊IP&#xff1a;127.0.0.1 代…

Java高频面试之集合篇

Java 中常用的容器有哪些&#xff1f; ArrayList 和 LinkedList 的区别&#xff1f; ArrayList 是基于数组实现的,LinkedList 是基于链表实现的. ArrayList实现了RandomAccess接口,可基于下标访问. LinkedList 实现了Deque /dek/,可以当做双端队列使用. 插入效率对比 如果从头部…

Java共享问题 、synchronized 线程安全分析、Monitor、wait/notify

文章目录 1.共享带来的问题1.1 临界区 Critical Section1.2 竞态条件 Race Condition 2. synchronized语法及理解2.1 方法上的 synchronized 3.变量的线程安全分析3.1.成员变量和静态变量是否线程安全&#xff1f;3.2.局部变量是否线程安全&#xff1f;3.2.1 局部变量线程安全分…

NIO学习总结(二)——Selector、FileLock、Path、Files、聊天室实现

一、Selector 1.1 Selector简介 1.1.1 Selector 和 Channel的关系 Selector 一般称为选择器 &#xff0c;也可以翻译为 多路复用器 。 它是 Java NIO 核心组件中的一个&#xff0c;用于检查一个或多个 NIO Channel&#xff08;通道&#xff09;的状态是否处于可读、可写。由…

ubuntu20.04环境搭建:etcd+patroni+pgbouncer+haproxy+keepalived的postgresql集群方案

搭建基于etcdpatronipgbouncerhaproxykeepalived的postgresql集群方案 宿主机操作系统:ubuntu20.04 使用kvm搭建虚拟环境(如没有安装kvm&#xff0c;请先自行安装kvm) 1、安装kvm服务 ①、查看虚拟支持 如果CPU 支持硬件虚拟化则输出结果大于0&#xff0c;安装kvm-ok命令检…

蓝桥省赛倒计时 35 天-双指针

双指针介绍 双指针算法是一种常用的算法技巧&#xff0c;它通常用于在数组或字符串中进行快速查找、匹配、排序或移动操作。 pointer 双指针并非真的用指针实现&#xff0c;一般用两个变量来表示下标&#xff08;在后面都用指针来表示&#xff09;。 双指针算法使用两个指针在数…

Android Gradle 开发与应用 (六) : 创建buildSrc插件和使用命令行创建Gradle插件

1. 前言 前文中&#xff0c;我们介绍了在Android中&#xff0c;如何基于Gradle 8.2&#xff0c;创建Gradle插件。这篇文章&#xff0c;我们以buildSrc的方式来创建Gradle插件。此外&#xff0c;还介绍一种用Cmd命令行的方式&#xff0c;来创建独立的Gradle插件的方式。 1.1 本…

第3集《天台教观纲宗》

乙二、约观行释 诸位法师慈悲&#xff01;陈会长慈悲&#xff01;诸位菩萨&#xff01;阿弥陀佛&#xff01; 请大家打开讲义第六页。我们看到乙二、约观行释。这一科是讲到天台教观的修学宗旨。 我们前面讲到&#xff0c;天台教观整个建立的过程&#xff0c;它是先有观法&a…

06 数据结构之树

引言&#xff1a; 数的代码实现&#xff0c; 先序遍历、中序、后序、层次遍历 /* binary_tree.h */ #ifndef _BINARY_TREE_H #define _BINARY_TREE_H#include <stdio.h> #include <stdlib.h> #include <string.h>#define DEBUG(msg) \printf("--%s--, %…

Tensorflow2.0+部署(tensorflow/serving)过程备忘记录Windows+Linux

Tensorflow2.0部署&#xff08;tensorflow/serving&#xff09;过程备忘记录 部署思路&#xff1a;采用Tensorflow自带的serving进模型部署&#xff0c;采用容器docker 1.首先安装docker 下载地址&#xff08;下载windows版本&#xff09;&#xff1a;https://desktop.docke…