【双指针】盛水最多的容器

盛水最多的容器

文章目录

  • 盛水最多的容器
    • 题目描述
    • 算法原理
      • 思路一
      • 思路二
    • 代码实现
      • Java代码实现
      • C++代码实现

题目描述

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

示例 2:

输入:height = [1,1]
输出:1

提示:

  • n == height.length
  • 2 <= n <= 105
  • 0 <= height[i] <= 104

算法原理

思路一

暴力枚举,两层for循环,没啥意思,会超时

时间复杂度为O(n^2)

思路二

利用单调性,使用双指针来解决问题

时间复杂度O(n)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代码实现

Java代码实现

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

C++代码实现

class Solution {
public:int maxArea(vector<int>& height) {int left = 0, right = height.size() - 1, ret = 0;while(left < right){int v = min(height[left], height[right]) * (right - left);ret = max(ret, v);if(height[left] < height[right]) left ++ ;else right --;}return ret;}
};

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

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

相关文章

Python+Qt虹膜检测识别

程序示例精选 PythonQt虹膜检测识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonQt虹膜检测识别》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用推…

C 语言获取文件绝对路径

示例代码 1&#xff0c;不包含根目录绝对路径&#xff1a; #include <stdlib.h> #include <stdio.h>int main(void) {char *fileName "/Dev/test.txt";char *abs_path _fullpath(NULL, fileName, 0);printf("The absolute path is: %s\n", a…

DDD 领域驱动设计

文章目录 请解释下什么是 DDD 领域驱动设计DDD 的四层领域模型是怎样的&#xff1f;包含哪些基础概念&#xff1f;DDD 中的贫血模型和充血模型有什么区别在 DDD 中&#xff0c;如何处理模型的聚合和聚合根DDD 中的实体和值对象有什么区别&#xff1f;在 DDD 中&#xff0c;如何…

【藏经阁一起读】(77)__《Apache Dubbo3 云原生升级与企业最佳实践》

【藏经阁一起读】&#xff08;77&#xff09; __《Apache Dubbo3 云原生升级与企业最佳实践》 目录 一、Dubbo是什么 二、Dubbo具体提供了哪些核心能力&#xff1f; 三、构建企业级Dubbo微服务 &#xff08;一&#xff09;、创建项目模板 &#xff08;二&#xff09;、将…

JDK 使用代理

JDK 使用代理 -D 选项 java -Dhttp.proxyHostwebcache.example.com -Dhttp.proxyPort8080 -Dhttp.nonProxyHosts"localhost|host.example.com" test.jarhttp.proxyHost http.proxyPort http.nonProxyHosts: localhost|192.168.0.* https.proxyHost: 192.168.0.254 …

【Qt一坑】qt编译出现“常量中有换行符”

在qt编译过程中出现“常量中有换行符”&#xff0c;原因有以下几点&#xff08;qt版本5.14.2&#xff09;&#xff1a; 1.中文编码格式问题&#xff0c;将UTF-8编码格式改成 UTF-8 BOM。 或者使用QtCreator 进行如下设置&#xff08;找到Qt的左边列表里的项目&#xff0c;下的…

jQuery、vue、小程序、uni-app中的本地存储数据和接受数据是什么?

在这四个工具/框架中&#xff0c;Uni-app和微信小程序比较类似&#xff0c;因为它们都是为了实现跨平台开发而设计的。 jQuery 是一个快速、小巧且特性丰富的 JavaScript 库。它提供了各种操作和处理 HTML DOM、事件、动画&#xff0c;以及提供各种工具函数的功能。然而&#…

​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第12章 信息系统架构设计理论与实践&#xff08;P420~465&#xff09;-思维导图】 课本里章节里所有蓝色字体的思维导图

nginx快速入门及配置文件结构

文章目录 Nginx 简介Nginx 特性Nginx 架构Nginx 相比Apache的优点Nginx 的安装启动、停止和重新加载 Nginx 配置Nginx 配置文件结构Nginx 工作流程 Nginx 简介 Nginx是 HTTP 和反向代理服务器&#xff0c;邮件代理服务器&#xff0c;以及 Igor Sysoev 最初编写的通用 TCP/UDP …

使用rustc_interface进行类型检查

rustc_span Rust 编译器中用于源代码位置跟踪和定位的库。它提供了对源代码位置、跟踪、范围和跨文件的操作和查询的功能。这个库对于诊断、错误信息、编译器插件、代码检查等任务非常有用。 主要功能: 源代码位置 (Span) 的表示 rustc_span::Span 是一个表示源代码的位置范…

解锁潜力:创建支持Actions接口调用的高级GPTs

如何创建带有Actions接口调用的GPTs 在本篇博客中&#xff0c;我们将介绍如何创建一个带有Actions接口调用的GPTs &#xff0c;以及如何进行配置和使用。我们将以 https://chat.openai.com/g/g-GMrQhe7ka-gptssearch 为例&#xff0c;演示整个过程。 Ps: 数据来源&#xff1a…

Go 以小端字节序修改文件

如果你想将修改的值以小端字节序存储&#xff0c;你需要注意以下几点&#xff1a; 确保你的操作系统和硬件使用小端字节序。 大多数现代系统都使用小端字节序&#xff0c;但有些特殊情况下可能会使用大端字节序。 将数据转换为小端字节序。 Go语言的标准库提供了binary.Little…

Linux:wget后台下载/查看后台任务进度

1. 后台下载 使用wget -b url&#xff1a; wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip后台任务启动后&#xff0c;会返回两段话&#xff0c;第一段返回一个pid&#xff0c;代表这个后台任务的进程&#xff0c;并且我们可以kill掉这个id来终止此次下载&#x…

下拉框的watch监听与change事件

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; watch监听是在赋值的时候就会触发&#xff0c;回显也是赋值&#xff0c;也会触发 change在值变更的时候才会触发&#xff0c;回显不属于值的变更&#xff0c;不会触发 问题描述 提示&#xff1a;这…

Vue2系列 -- 组件自动化全局注册(require.context)

参考官网&#xff1a;https://v2.cn.vuejs.org/v2/guide/components-registration.html 1 作用 省略 import 引入组件 省略 在main.js 中注册 实现自动化引入组件 2 自定义文件夹 在 src 下新建一个 components/base 文件夹&#xff0c;用于存放要自动注册的组件 3 在 base…

【Docker】从零开始:1.Docker概述

【Docker】从零开始&#xff1a;1.Docker概述 1.什么是Docker2.为什么要使用Docker3.传统虚拟机技术与Linux容器技术的区别(1).传统虚拟机技术(2).Linux容器 4.Docker的特点一次构建、随处运行a.更快速的应用交付和部署b.更便捷的升级和扩缩容&#xff1a;c.更简单的系统运维d.…

边缘计算是如何为元宇宙提供动力的?

构建元宇宙虚拟世界并不简单&#xff0c;也并不便宜&#xff0c;但是还是有许多大型公司正在转移大量资源来开发他们的元宇宙业务&#xff0c;当然大部分企业注意力都围绕着 VR 耳机、AR 眼镜、触觉手套和其他沉浸式虚拟现实体验所需的可穿戴硬件。虽然这种沉浸式的体验是最终结…

特殊token的特殊用途

特殊token的特殊用途 特殊voc设计传统的特殊token 用途特殊用途例子特殊voc设计 普通token1 。。。。普通token1000,特殊token1,,,,,特殊token100 ,特殊指示token1,,,特殊指示token100 传统的特殊token 用途 在您提供的示例中,有1000个普通 token(从普通 token …