力扣:盛最多水的容器

news2024/11/16 5:35:40

题目
给定一个长度为 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。

思路
最优的做法是使用「双指针」。双指针代表的是 可以作为容器边界的所有位置的范围。在一开始,双指针指向数组的左右边界,表示 数组中所有的位置都可以作为容器的边界,因为我们还没有进行过任何尝试。在这之后,我们每次将 对应的数字较小的那个指针 往 另一个指针 的方向移动一个位置,就表示我们认为 这个指针不可能再作为容器的边界了。

(1)求出当前双指针对应的容器的容量;
(2)对应数字较小的那个指针以后不可能作为容器的边界了,将其丢弃,并移动对应的指针。
代码

package com.it;

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        // 输入任意一维数组,按照英文逗号分隔
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        String[] array = str.split(",");
        int[] newArray = new int[array.length];
        for (int i = 0; i < newArray.length; i++) {
            newArray[i] = Integer.parseInt(array[i]);
        }
        // 输出结果
        System.out.println(maxArea(newArray));
    }

    // 盛最多水的容器
    public static int maxArea(int[] height) {
        int left = 0;
        int right = height.length - 1;
        int ans = 0;
        while (left < right) {
            int area = Math.min(height[left], height[right]) * (right - left);
            ans = Math.max(ans, area);

            if (height[left] < height[right]) {
                ++left;
            } else {
                --right;
            }
        }
        return ans;
    }
}

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

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

相关文章

【公众号开发】图像文字识别 · 模板消息推送 · 素材管理 · 带参数二维码的生成与事件的处理

【公众号开发】&#xff08;4&#xff09; 文章目录 【公众号开发】&#xff08;4&#xff09;1. 图像文字识别功能1.1 百度AI图像文字识别接口申请1.2 查看文档学习如何调用百度AI1.3 程序开发1.3.1 导入依赖&#xff1a;1.3.2 公众号发来post请求格式1.3.3 对image类型的消息…

【JavaEE】synchronized原理 -- 多线程篇(6)

synchronized原理 1. synchronized具体采用了哪些加锁策略?2. synchronized内部实现策略(内部原理)2.1 偏向锁2.2 轻量级锁与重量级锁 3. synchronized 的其它优化策略3.1 锁消除3.2 锁的粒度 4. 总结 1. synchronized具体采用了哪些加锁策略? synchronized既是悲观锁, 也是…

Power BI 傻瓜入门 4. Power BI:亮点

本章内容包含&#xff1a; 在Power BI Desktop上学习诀窍摄入数据使用模型试用Power BI服务 就像评估一个由多种成分组成的蛋糕一样&#xff0c;Power BI要求其用户熟悉商业智能&#xff08;BI&#xff09;解决方案中的功能。几乎所有与Power BI交互的用户都是从桌面版开始的…

Locust负载测试工具实操

本中介绍如何使用Locust为开发的服务/网站执行负载测试。 Locust 是一个开源负载测试工具&#xff0c;可以通过 Python 代码构造来定义用户行为&#xff0c;避免混乱的 UI 和臃肿的 XML 配置。 步骤 设置Locust。 在简单的 HTTP 服务上模拟基本负载测试。 准备条件 Python…

2021年03月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 下列代码的输出结果是&#xff1f;&#xff08; &#xff09; x 0x10print(x)A&#xff1a;2 B&#xff1a;8 C&#xff…

NeurIPS 23 Spotlight丨3D-LLM:将3D世界注入大语言模型

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2307.12981.pdf 开源代码&#xff1a;https://vis-www.cs.umass.edu/3dllm/ 摘要&#xff1a; 大型语言模型 (LLM) 和视觉语言模型 (VLM) 已被证明在多项任务上…

FPGA的256点FFT调用Quartus IP核实现VHDL傅里叶变换

名称&#xff1a;256点FFT调用Quartus IP核实现傅里叶变换 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a;使用VHDL实现256点FFT&#xff0c;调用Quartus IP核实现傅里叶变换 演示视频&#xff1a;http://www.hdlcode.com/index.php?mhome&cView…

Mysql基础与高级汇总

SQL语言分类 DDL:定义 DML&#xff1a;操作 DCL:控制(用于定义访问权限和安全级别) DQL:查询 Sql方言 ->sql&#xff1a;结构化查询语言 mysql:limit oracle:rownum sqlserver:top 但是存储过程&#xff1a;每一种数据库软件一样SQL语法要求: SQL语句可以单行或多行书写&…

msvcp110.dll无法继续执行代码怎么办?msvcp110.dll丢失的解决方法

msvcp110.dll 丢失通常意味着你的计算机上缺少一个名为 msvcp110.dll 的动态链接库文件。这个文件是 Microsoft Visual C 2010 Redistributable Package 的一个组件&#xff0c;它包含了一些运行时库文件。当你的计算机缺少这个文件时&#xff0c;可能会出现一些问题&#xff0…

有哪些靠谱的获客渠道? 大家都在说精准大数据获客,你了解过没?

如何获取准确、实际的客户信息是众多企业在获客阶段最头疼的问题&#xff0c;想要精准获客就需要了解客户的真实需求&#xff0c;若企业无法满足又无法预估到客户意向&#xff0c;那么将会浪费双方的时间&#xff0c;费力不讨好&#xff0c;企业获客难题是这么多年最难以解决的…

接口自动化测试难点:数据库验证解决方案

接口自动化中的数据库验证&#xff1a;确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环&#xff0c;而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码&#xff0c;帮…

关于Mysql中的索引与事务

索引 定义 索引&#xff1a;为了提高查找效率而使用的一种数据结构把数据组织起来&#xff0c;可以把索引理解在书的目录或字典的检索表&#xff08;拼音检索&#xff09; 索引是一种特殊的文件&#xff0c;可以包含着对数据表里的所有记录的引用指针&#xff0c;对表中的一…

jQuery实现输入框提示并点击回显功能呢

html代码: <input type"text" id"affOrganization" name"affOrganization" class"form-control" placeholder"Search..." style"width: 300px" > <div class"search_suggest" id"gov_se…

模拟退火算法(SA)求解旅行商问题(TSP)python

目录 一、模拟退火算法求解TSP&#xff08;city14&#xff09;的python代码 二、city14的运行结果 三、 模拟退火算法求解TSP&#xff08;city30&#xff09;的python代码 四、city30的运行结果 一、模拟退火算法求解TSP&#xff08;city14&#xff09;的python代码 impor…

中文编程开发语言工具构件说明:屏幕截取构件的编程操作

屏幕截取 用于截取指定区域的图像。 图 标&#xff1a; 构件类型&#xff1a;不可视 重要属性 l 截取类型 枚举型&#xff0c;设置在截取屏幕时的截取类型。包括&#xff1a;全屏幕、指定区域、活动窗口三种。当全屏幕截取时相当于执行了硬拷屏&#xff08;PrintScre…

优化Scrum敏捷需求管理流程,敏捷需求如何管理。

​优化敏捷需求管理流程的方法可以参照如下&#xff1a; 明确需求 。在项目开始时&#xff0c;要确保清楚地理解客户需求&#xff0c;明确项目的目标和范围&#xff0c;以便能够在敏捷迭代中快速响应需求变更。 使用用户故事 。采用用户故事的方式&#xff0c;让客户和开发团…

虚拟化、容器与Docker基本介绍以及安装部署(Docker 基本管理)

目录 1 Docker 概述 1.1 Docker与虚拟机的区别 1.2 容器在内核中支持2种重要技术 1.3 Docker核心概念 2 安装 Docker 2 Docker 镜像操作 2.1 搜索镜像 2.2 获取镜像 2.3 镜像加速下载 2.4 查看镜像信息 2.4.1 查看下载的镜像文件信息 2.4.2 查看下载到本地的所有镜像…

【STL】bitset的模拟实现

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C进阶 ⭐代码仓库&#xff1a;C进阶 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们的支持是我…

HTML5有哪些新特性?移除了哪些元素?

HTML5引入了许多新特性&#xff0c;以下是其中一些主要的新特性&#xff1a; 1&#xff1a;语义化元素&#xff1a;HTML5引入了一些新的语义化元素&#xff0c;如 <header>、<footer>、<nav>、<article>、<section>等&#xff0c;使得页面结构…