双指针: 盛水最多的容器

目录

描述

解法       


盛水最多的容器_牛客题霸_牛客网

描述

        给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水

        1.你不能倾斜容器

        2.当n小于2时,视为不能形成容器,请返回0

        3.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1

数据范围:

        0<=ℎ𝑒𝑖𝑔ℎ𝑡.𝑙𝑒𝑛𝑔𝑡ℎ<=1050<=height.length<=105

        0<=ℎ𝑒𝑖𝑔ℎ𝑡[𝑖]<=1040<=height[i]<=104

如输入的height为[1,7,3,2,4,5,8,2,7],那么如下图:

解法       

 双指针算法一般都不复杂,一般有快慢双指针,一般在链表操作会用到;左右双指针一般会用在数组类的题目。

        本题是左右双指针,左指针是从0开始往右遍历,右指针是从 height.length -1 处往左遍历。当左指针在 0 处,右指针在 height.length -1 处,此时容器的底最长,但要想盛最多的水,就要让容器的底乘高数值最大,容器的高取左右两指针所指向的元素最小值。

        当左指针指向的高比右指针所指向的高小,左指针往右前进 1;当左指针指向的高比右指针所指向的高大,右指针往左前进 1;当左指针指向的高和右指针所指向的高相等,无论是左指针右移 1 还是 右指针左移 1 都行,因为就算后面一步遇到一个更大的高,容器也只取两高度中最小的那个,不影响结果。

        

        public int maxArea(int[] height) {int left = 0, right = height.length - 1;int res = 0;for (; left < right; ) {res = Math.max((right - left) * Math.min(height[left], height[right]),res);if (height[left] < height[right]) {left++;} else {right--;}}return res;}

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

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

相关文章

【python】ModuleNotFoundError: No Module Named ‘openyxl’

成功解决“ModuleNotFoundError: No Module Named ‘openyxl’”错误的全面指南 在Python编程中&#xff0c;遇到ModuleNotFoundError: No Module Named openyxl这样的错误通常意味着Python解释器无法找到名为openyxl的模块。然而&#xff0c;这里存在一个常见的拼写错误&#…

从0到1学Binder-Binder驱动初始化

文章目录 1. binder_alloc_shrinker_init2. debugfs_create_dir/debugfs_create_file3. init_binder_device4. init_binderfs 我的微信公众号“ZZH的Android”&#xff0c;还有更多 Android 系统源码解析的干货文章等着你&#xff0c;欢迎关注加入交流群。 binder驱动启动入口如…

蓝桥杯物联网竞赛_STM32L071KBU6_第十五届蓝桥杯物联网竞赛国赛代码解析

目录 前言&#xff1a;1、配置及代码&#xff1a;(1) A板&#xff1a;[1] CUBMX配置&#xff1a;[2] keil5代码&#xff1a; (2) B板&#xff1a;[1] CUBMX配置&#xff1a;[2] keil5代码&#xff1a; 2、代码解析&#xff1a; 前言&#xff1a; 这届国赛是目前为止最难一届&am…

计算机发展史 | 从起源到现代技术的演进

computer | Evolution from origins to modern technology 今天没有参考资料哈哈 PPT&#xff1a;&#xff08;评论区&#xff1f;&#xff09; 早期计算工具 算盘 -算盘是一种手动操作的计算辅助工具&#xff0c;起源于中国&#xff0c;迄今已有2600多年的历史&#xff0c;是…

实验9 静态路由配置

实验9 静态路由配置 一、 原理描述二、 实验目的三、 实验内容四、 实验配置五、 实验步骤 一、 原理描述 网络中的每个路由器都会维护一张路由表或转发表。路由表的表项记录着目的网络信息以及下一跳I 地址。路由表可以手动配置&#xff0c;也可以通过路由算法动态生成。静态…

使用 MDC 实现日志链路跟踪,包教包会!

在微服务环境中&#xff0c;我们经常使用 Skywalking、Spring Cloud Sleut 等去实现整体请求链路的追踪&#xff0c;但是这个整体运维成本高&#xff0c;架构复杂&#xff0c;本次我们来使用 MDC 通过 Log 来实现一个轻量级的会话事务跟踪功能&#xff0c;需要的朋友可以参考一…

小世界网络生成及其分析

研究背景: 小世界网络是一种介于规则网络和随机网络之间的网络模型,具有短平均路径和高聚集性的特点。这种网络模型被广泛应用于社交网络、互联网、生物网络等领域的研究中。研究小世界网络的生成和分析可以帮助我们理解和揭示复杂网络的结构和特性,以及网络中信息传播、动力…

数据驱动的未来:数据融合与平台化应用的探索

随着大数据时代的到来&#xff0c;数据驱动的决策制定已成为企业与组织的核心。本文探讨了数据驱动的概念&#xff0c;数据融合的技术及其重要性&#xff0c;并分析了平台化应用如何促进数据的有效利用和价值创造。 数据驱动的决策制定 在信息化时代的浪潮中&#xff0c;数据已…

Flutter之旅:探索安卓与跨平台开发的无限可能

随着移动互联网的飞速发展,移动应用开发已成为企业竞争的重要战场。在众多开发框架中,Flutter凭借其高效的性能和出色的跨平台能力,正引领着一场安卓与跨平台开发的奇幻之旅。本文将从Flutter的起源、特点、优势以及未来展望等方面,深入探讨Flutter在移动应用开发领域的无限…

su和sudu、三剑客中的sed、awk命令

一、用户授权 如果普通用户需要执行特殊操作&#xff0c;有两种方法&#xff1a; su -root 切换到root账户进行特殊操作&#xff0c;然后再回到普通用户 sudo 命令 su命令&#xff1a; 优点&#xff1a;使用简单 缺点&#xff1a;root密码容易泄露 普通用户执行操作不可控 su…

官宣!2024 MongoDB Developer Day来了!北上深三场等你集结!

北上深开发者 专为你们打造的 MongoDB Developer Day 来了&#xff01; 动手实操工作坊➕模型设计优化专场 学习 NoSQL 数据建模的最佳实践 深入探索 MongoDB 的各种可能性 和开发者同行和 MongoDB 技术专家 一起度过充实的一天&#xff01; 北京&#xff08;6/22&…

HBuilderx uniapp启动微信小程序报错[error] Error: Fail to open IDE

1、打开微信呢开发者工具&#xff0c;添加项目 创建小程序--目录&#xff08;目录选择自己小程序项目下的dist/dev/mp-weixin&#xff09;点击确定之后微信开发者工具会自己去编译&#xff0c;等待一会便好&#xff0c;查看微信开发者工具控制台是否有报错日志 如果发现[插件 w…

Yshop框架的小程序登录

1配置 根据请求头去判断&#xff0c;走小程序&#xff0c;还是Pc端。 #jwt jwt:header: Authorization#小程序前缀 请求头mini-program-header: MiAuthorization# 令牌前缀token-start-with: Bearersecret: k09BQnaF# 必须使用最少88位的Base64对该令牌进行编码base64-secret…

6.13 CO-RE(Compile Once – Run Everywhere)简介

写在前面 BPF CO-RE 即Compile Once – Run Everywhere,编译一次——到处运行。BPF CO-RE是为了解决BPF的可移植性而存在,也就是说编写一个BPF程序,该程序能够成功编译、通过内核验证,并且能够在不同的内核版本上正确运行,而无需为每个特定的内核重新编译。 一,BPF可移…

科技与环保

科技与环保之间存在着密不可分的关系&#xff0c;两者相互影响、相互促进&#xff0c;共同推动着社会的可持续发展。以下是对科技与环保关系的详细分析&#xff1a; 一、科技进步对环保的积极作用 提供技术手段和解决方案&#xff1a;科技进步为环境保护提供了强有力的技术支…

maven项目中报错 could not find class that it depends on找不到所依赖的类

maven工程在程序编译时报错&#xff0c;could not find class that it depends on找不到所依赖的类。 能够引起这种错误的原因&#xff1a;jar包缺失、jar包冲突、jar包不完整、IDE工具问题。 本次解决方案&#xff1a;删除本地仓库中的maven项目&#xff0c;重新install项目&a…

Vue05-数据绑定

一、数据绑定 1-1、v-bind指令 1-2、v-model指令 1、单项数据绑定&#xff1a; 2、双向数据绑定 注意&#xff1a; 表单元素&#xff0c;必须要有属性&#xff1a;value&#xff01;&#xff01;&#xff01; 1-3、小结

【数据库系统概论】触发器

【数据库系统概论】触发器 概述 在数据库系统中&#xff0c;触发器&#xff08;Trigger&#xff09;是一种特殊的存储过程&#xff0c;当特定事件在数据库表上发生时&#xff0c;会自动执行。触发器主要用于确保数据的完整性、一致性和实现复杂的业务规则。触发器是由用户定义…

电拖基础JIAOXUE

1.最简单的TT马达&#xff0c;实际就是一个减速电机&#xff1a; 减速箱的内部包含了一组齿轮。在实际的使用中&#xff0c;绝大部分的电动机都要和减速箱配合使用&#xff0c;因为一般的电机转速都在每分钟几千转甚至1万转以上&#xff0c;而在实际的使用中并不需要这么快的转…

PSO-LSSVM-Adaboost分类模型,粒子群算法优化基于最小二乘支持向量机结合Adaboost的数据分类-附代码

PSO-LSSVM-Adaboost是一种结合PSO-LSSVM和AdaBoost两种机器学习技术的方法&#xff0c;旨在提升模型的性能和鲁棒性。具体来说&#xff0c;AdaBoost是一种集成学习方法&#xff0c;通过组合多个弱分类器来形成一个强分类器&#xff0c;每个分类器针对不同的数据集和特征进行训练…