Leetcode JAVA刷刷站(11)盛最多水的容器

news2024/9/22 1:34:37

一、题目概述 

二、思路方向 

       这个问题是经典的“盛最多水的容器”问题,通常使用双指针法来解决。基本思路是,我们初始化两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置。然后,我们计算当前两个指针所指向的垂线构成的容器的水量,并更新最大水量(如果当前水量更大)。接下来,我们根据当前容器的短板(即高度较小的那条线)来移动指针:如果左指针的线更短,我们就向右移动左指针,因为如果我们向左移动右指针,容器的宽度会减小,而高度(受限于左指针的线)不会增加,所以水量不可能增加;反之亦然。

三、代码实现 

public class Solution {  
    public int maxArea(int[] height) {  
        if (height == null || height.length < 2) {  
            return 0;  
        }  
          
        int left = 0;  
        int right = height.length - 1;  
        int maxWater = 0;  
          
        while (left < right) {  
            int currentArea = Math.min(height[left], height[right]) * (right - left);  
            maxWater = Math.max(maxWater, currentArea);  
              
            if (height[left] < height[right]) {  
                left++; // 移动短板  
            } else {  
                right--; // 移动短板  
            }  
        }  
          
        return maxWater;  
    }  
      
    public static void main(String[] args) {  
        Solution solution = new Solution();  
        int[] height = {1,8,6,2,5,4,8,3,7};  
        System.out.println("Maximum water container capacity: " + solution.maxArea(height));  
    }  
}

执行结果:

 四、小结

       这段代码首先检查数组是否为空或长度小于2,因为至少需要两条线才能构成容器。然后,它初始化两个指针分别指向数组的开始和结束,并初始化最大水量为0。在while循环中,它计算当前指针所指向的两条线构成的容器的水量,并更新最大水量(如果当前水量更大)。之后,它根据当前容器的短板来移动指针,直到两个指针相遇。最后,它返回最大水量。

 结语  

不管前方的路有多苦

只要走的方向正确

不管多么崎岖不平

都比站在原地更接近幸福

!!!

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

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

相关文章

工业智能网关在汽车制造企业的应用价值及功能-天拓四方

随着工业互联网的飞速发展&#xff0c;工业智能网关作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为制造业数字化转型的核心组件。本文将以一家汽车制造企业的实际使用案例为蓝本&#xff0c;深入解析工业智能网关在实际应用中的价值、功能及其实操性。 一、背景与挑…

Java语言程序设计——篇十三(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

Leetcod编程基础0到1-基础实现内容(个人解法)(笔记)

以下为个人解法&#xff0c;欢迎提供不同思路 1768. 交替合并字符串 题目&#xff1a;给你两个字符串 word1 和 word2 。请你从 word1 开始&#xff0c;通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长&#xff0c;就将多出来的字母追加到合并后字符串的末尾&…

凹凸纹理概念

1、凹凸纹理 纹理除了可以用来进行颜色映射外&#xff0c;另外一种常见的应用就是进行凹凸映射。凹凸映射的目的是使用一张纹理来修改模型表面的法线&#xff0c;让我们不需要增加顶点&#xff0c;而让模型看起来有凹凸效果。原理&#xff1a;光照的计算都会利用法线参与计算&…

winform 大头针实现方法——把窗口钉在最上层

平时我们再使用成熟的软件的时候&#xff0c;会发现有个大头针的功能挺不错的。就是点一下大头针&#xff0c;窗口就会钉住&#xff0c;一直保持在最上面一层&#xff0c;这样可以一边设置参数&#xff0c;一边观察这个窗口里面的变化&#xff0c;比较方便。下面我就来简单实现…

进阶SpringBoot之首页和图标定制

idea 快捷键&#xff1a; ctrl shift "" 使缩起来的代码展开 ctrl shitf "-" 使代码缩起 WebMvcAutoConfiguration.class&#xff1a;可以看到需要有一个 index.html 文件映射到首页 private Resource getIndexHtmlResource(Resource location) {tr…

关于SpringMVC的一点学习笔记

关于SpringMVC的一点学习笔记 1、 maven依赖/目录结构2、配置文件3、从前端请求开始4、Controller5、Service6、Dao7、mybatis8、utils公共类9、 分页查询 QueryPageBean / PageResult10、静态页面Freemarker用在经常访问但不经常变化的页面场景中11、Reids12、Echarts13、认证…

后台管理权限自定义按钮指令v-hasPermi

第一步:在src下面建立一个自定义指令文件,放自定义指令方法 permission.js文件: /*** v-hasPermi 操作权限处理*/import store from "/store";export default {inserted(el, binding) {const { value } binding;//从仓库里面获取到后台给的数组const permission s…

软件设计之MySQL(2)

软件设计之MySQL(2) 此篇应在JavaSE之后进行学习: 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 Navicat可以在软件管家下载 使用navicat连接mysql数据库创建数据库、表、转储sql文件&#xff0c;导入sql数据 学习内容&#xff1a; 基础的SELECT语…

数据分析:宏基因组数据的荟萃分析

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 介绍 宏基因组数据的荟萃分析是一种综合多个独立宏基因组研究结果的方法&#xff0c;目的是揭示不同人群或样本中微生物群落的共同特征和差异。这种方法特别适用…

ubantu安装python3.10

1.从官网下载安装 1.1安装依赖 sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev1.2从官网下载源文件 wget https://www.python.org/ftp/pyth…

设计资讯 | 巴黎 2024 年奥运会“另一个自我”以 DAB 汽车定制电动摩托车的形式亮相

巴黎 2024 年奥运会运动作为定制电动摩托车 DAB Motors 融入了2024 年巴黎奥运会的精神&#xff0c;通过其定制电动摩托车诠释了奥运会的五环。这些车辆由其服务部门 DAB Custom Studio (DCS) 提供&#xff0c;颜色编码与奥运五环一样。每种颜色代表一项运动&#xff1a;蓝色代…

RobotFramework框架+Selenium实现UI自动化测试(十六)

学习目录 1 UI自动化测试 2安装RF框架所需的 robotframework-seleniumlibrary包 1&#xff09; robotframework-seleniumLibrary版本说明 2&#xff09; robotframework-selenium2Library版本说明 3 selenium介绍 3.1 配置操作系统环境支持使用selenium打开浏览器 3.2 s…

「OC」简单网络请求的实现

「OC」简单网络请求的实现 文章目录 「OC」简单网络请求的实现写在前面URL和API网络请求的流程网络申请数据解析参考文章 写在前面 在暑假最后一个项目天气预报之中&#xff0c;使用了网络请求&#xff0c;虽然说还是不太理解网络请求之中的相关内容&#xff0c;以及在写天气预…

傻瓜式一步到位Mysql 8.0 密码修改

5.7之前修改密码语句 update user set authentication_string password(“root”) where user “root”; mysql 5.7.9以后废弃了password字段和password()函数&#xff1b;并在user表加了authentication_string:字段表示用户密码 #进入到mysql 安装目录下 #停止 mysql 服务 …

低碳环保测试知识问答活动

全国生态日&#xff0c;倒计时1天。为了组织这场关于“低碳环保测试知识问答”主题的线上知识竞赛&#xff0c;我们历经从活动方案策划到落地答题小程序上线。 一、活动背景 通过举办此次知识竞赛&#xff0c;旨在提高公众对低碳环保的认识和参与度&#xff0c;推广低碳生活方…

网络协议七 应用层 DNS协议 和 DHCP协议 这两个都了解就好

应用层常见的协议 1. DNS 协议 了解 将baidu.com 解析成具体IP的协议 实际上可以理解为&#xff1a;客户端 通过 DNS 协议 和 DNS 服务器进行交互&#xff0c;将域名转换成IP 2. DHCP 协议 了解 从DHCP 服务器自动获取IP地址

P1305 新二叉树

题目&#xff1a; 洛谷传送门&#xff1a;P1305 新二叉树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int n,ans; char root; struct node{char nod,r,l; }a[100000]; void dfs(char idx){cout<…

Erupt 项目搭建

创建Spring Boot项目 Maven依赖 Spring Boot版本为 2.7.10&#xff0c;erupt版本为 1.12.14 erupt版本要与Spring Boot版本适配&#xff0c;3.x.x版本Spring Boot暂不适用说是 <properties><erupt.version>1.12.14</erupt.version></properties> <…

全场景——(三)USB开发基础(1)

文章目录 一、USB 系统硬件框架和软件框架1.1 实验现象1.2 硬件框架1.3 软件框架 二、USB 电气信号2.1 USB 设备状态切换图2.2 硬件线路2.3 电子信号2.4 低速/全速信号电平2.5 高速信号电平2.6 设备连接与断开2.6.1 连接2.6.2 断开 2.7 复位2.8 设备速率识别2.8.1 低速/全速2.8…