【LeetCode Top 100】11. Container With Most Water【Medium】【JAVA】

FPGA_AD9361实战 1.参考网站。 阅读详情

1. 题目

在这里插入图片描述

2. 题意

题目的意思是一个数组,数组的每个值代表一个柱子的高度,求所有柱子两两组合中,两个柱子跟x轴组成的区域最大容纳水的量。转换为数学关系就是所有垂直x轴的线段两两组合,每个组合的值为两个线段之间的距离与两条线段中较短线段的乘积。

3. 思路

最容易的思路就是,将所有的情况进行遍历,即循环遍历每种情况,暴力法求解,时间复杂度为O(n²)。然后我们考虑如何降低时间复杂度,我们可以考虑,从柱子的最外面两侧的柱子,向中间进行靠拢,对于外侧的柱子,他们已经取得了更大的两线段之间的距离,为了获取更大的面积,向内移动的过程中,需要不断更换组合中矮的柱子,才有可能获得更大的面积。
思路总结:通过设置两个“指针”,从最外面两侧的柱子向中间进行靠拢,每次移动的柱子为高度低的柱子,每次移动一格,移动后计算当前获取的面积跟当前最大面积值,若大于当前最大面积值而覆盖,之后再比较两个柱子的高度,重复比较-移动-计算的过程,直到两个柱子相遇。总体时间复杂度为O(n)。

4. 解题代码

暴力法:

	public int maxArea(int[] height) {
        int maxArea = 0;
        // 遍历所有情况进行比较求解
        for (int i = 0; i < height.length; i++) {
            for (int j = i + 1; j < height.length; j++) {
                int temp = (j - i) * minHeight(height[i], height[j]);
                if (maxArea < temp) {
                    maxArea = temp;
                }
            }
        }
        return maxArea;
    }

    private int minHeight(int a, int b) {
        return a > b ? b : a;
    }

从两侧向中间移动的方法:

	public int maxArea(int[] height) {
        int maxArea = 0, start = 0, end = height.length - 1;
        
        // 直到两个柱子相遇结束
        while (start < end) {
        	// 判断当前组合是否取得更大面积
            int temp = (end - start) * minHeight(height[start], height[end]);
            if (temp > maxArea) {
                maxArea = temp;
            }
            
            // 判断应该移动的柱子
            if (height[start] < height[end]) {
                start++;
            } else {
                end--;
            }
        }
        return maxArea;
    }

    private int minHeight(int a, int b) {
        return a > b ? b : a;
    }

5. 运行结果

在这里插入图片描述

6. 相关链接

本题代码的github链接
其他 LeetCode 题目解析

基于YOLOv8的农作物病虫害检测系统设计与实现 国内如中国农业大学的科研团队采用改进的Faster R-CNN模型对小麦病害进行检测,取得了较好的效果。农作物病虫害是影响农业生产的重要因素之一,每年因病虫害导致的农作物减产高达20%-40%。YOLO(You Only Look Once)系列算法作为目标检测领域的代表性模型,以其高效、准确的特点在众多领域得到广泛应用。YOLOv8作为该系列的最新版本,在精度和速度上都有显著提升,非常适合农作物病虫害检测这类需要实时处理的应用场景。然而,现有研究仍存在一些不足:一是模型复杂度高,难以部署到移动设备; 阅读详情

相关推荐

中国区ASP服务性规范考试

10、每次现场维护服务,工程师需按照400要求达到现场的时间与客户联系,在抵达现场、故障恢复后两个时间点分别向400报CALL ,如与客户联系变更到现场时间点,也需向400电话备案(400-822-9999)……20、工程师小B 在接到客户故障申报后赶到客户现场,发现问题无法解决,于是及时将情况反馈至技术支持响应工程师小C ,小B 就和小C 协商由小C 远程解决此问题,后小B 离开客户现场。18、小L 到客户现场交付安装服务。6、EPMS 中上载初验证书的命名规则为:合同号+初验的客户签署日期……

2301_76197693的博客 1905

LeetCode Top 100 Liked Questions 11. Container With Most Water (Java版; Medium)

welcome to my blog LeetCode Top 100 Liked Questions 11. Container With Most Water (Java版; Medium) 题目描述 Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, a...

littlehaes的博客 156

STM32L452与FPGA通信翻车?手把手教你关闭I2C时钟延展避坑(附OVR错误解决方案)

本文深入解析STM32L452与FPGA在I2C通信中因时钟延展功能导致的常见问题,提供关闭I2C时钟延展的详细配置方法(NOSTRETCH模式),并针对可能出现的OVR错误给出Combined模式解决方案。通过实战案例和波形分析,帮助工程师快速排查和解决嵌入式系统中的I2C兼容性问题。

e3f4g5的博客 214

【LeetCode 1024】视频拼接 Video Stitching

题目: 题意为:用一个chips[][]数组来记录一些视频片段,chips[i][0]记录开始时间,chips[i][1]记录结束时间,给定一个最终要到达的时间点,求判断给定的视频片断,能否拼凑到要求的时间点,如果能到达,问最少需要多少个视频片段可以完成。 举例: 举例部分,例如第三个例子,里面的视频碎片中,选取[0,4]、[4,7]、[6,9]这三个片段,刚好可以到达时间点 9,因此需要的最...

卤小蛋学编程 9427

uniapp [移动端H5网页] - 强力解决弹起软键盘后页面被挤压变形或页面整体上移问题,点击input输入框键盘弹出底部被上推往上顶遮挡及各种问题(兼容安卓苹果ios手机,微信公众号网页也适用)

uni-app,h5网页,input输入框组件,uniapp h5软键盘弹出,uni-app 输入框,键盘弹起时页面整体上移问题,uni,H5页面,解决软键盘弹起页面被挤压、被往顶的问题,解决uni-app 输入框,键盘弹起时页面整体上移问题,uniapp调用手机系统软键盘,页面窗口被顶起,布局定位失效,解决uniapp软键盘弹起导致页面fixed定位元素被顶上去,输入法软键盘弹起,窗口顶起,变形解决办法,UniApp中input组件在IOS设备上弹出软键盘时页面整体上移问题的解决方案,以及input组件聚

🏆 前端领域优质创作者 1万+

如何设置Xilinx以太网IP核的Pause帧处理

这里要注意,为什么是或,第一个条件是该功能使能取反,也就是说,如果你设置使能不打开的话,这个条件是直接满足的;先来看图中第二句,判断该以太网数据包为Global Pause帧(gpp),首先要满足Step1,然后是由上图中第二句代码(assign global_pause_packet)后面的所有项“与”(&&)起来的,就是说要满足后面所有的项,分别是DA符合,SA符合,Etype符合,Opcode符合,并且使能了该功能(即设置ctl_rx_enable_gpp=1)。如果没通过,则进入Step3。

qq_43416206的博客 616

树、二叉树的前中后层序遍历(递归、非递归Java实现)

文章目录1. 二叉树的前中后序遍历(递归,非递归)以及层序遍历1.1 二叉树前中后遍历的递归解法1.2 二叉树前中后遍历的非递归解法1.2.1 非递归的前序遍历:(LeetCode 144)1.2.2 非递归的中序遍历:(LeetCode 94)1.2.3 非递归的后序遍历:(LeetCode 145)1.3 层序遍历:(LeetCode 102、103、107)2 树的前中后层序遍历2.1 前序...

卤小蛋学编程 5077

鸿蒙接入微信支付 微信H5网页在鸿蒙系统的适配方法(含支付兼容方案) 微信H5适配鸿蒙系统 | ArkWeb识别 | 鸿蒙浏览器UA | 微信支付鸿蒙适配 | 鸿蒙微信判断方式

微信H5网页鸿蒙系统适配指南 针对微信H5网页在鸿蒙系统出现的兼容问题,本文提供完整适配方案。关键点包括: 环境识别:

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1298

LeetCode 有关树深度、路径的题目(JAVA代码实现)

文章目录1. 路径相关的题目112.路径总和113.路径总和 II437.路径总和 III124.二叉树中的最大路径和257.二叉树的所有路径2. 深度相关的题目111.二叉树的最小深度559.N叉树的最大深度834.树中距离之和863.二叉树中所有距离为 K 的结点865.具有所有最深结点的最小子树3. 其他长度相关的题目543.二叉树的直径563.二叉树的坡度662.二叉树最大宽度 1. 路径...

卤小蛋学编程 1075

即插即用系列(代码实践) | CVPR 2025 WPFormer:小波与原型增强Transformer——表面缺陷检测SOTA,专治弱缺陷与杂乱背景

摘要:本文提出了一种基于小波变换和原型增强的Transformer模型(WPFormer),用于像素级表面缺陷检测。该模型针对工业场景中微弱缺陷难以识别和杂乱背景干扰严重的问题,创新性地将小波变换引入Transformer的注意力机制,通过频域信息分离噪声与边缘特征,同时利用原型向量引导查询,实现了更精准的缺陷定位。核心模块包括小波增强交叉注意力(WCA)和原型引导交叉注意力(PCA),适用于工业缺陷检测、伪装目标检测和医学图像分割等任务。代码已开源,支持即插即用集成到现有框架中。

分享顶会顶刊论文即插即用模块 298

如何实现在Go语言中替换程序自身

总结起来,我们可以通过将新的程序二进制文件写入磁盘,并在运行时启动这个新的程序来实现在Go语言中替换程序自身。在Go语言中,有时候我们需要在程序运行时替换程序自身,例如更新程序版本或者进行热重启。本文将介绍一种正确的方式来实现在Go语言中替换程序自身的方法,并提供相应的源代码示例。此外,替换程序自身可能会导致正在运行的程序产生意外行为或终止,请谨慎使用,并确保在合适的时机进行替换操作。实现替换程序自身的关键是将新的程序二进制文件写入到磁盘,并在运行时启动这个新的程序。函数启动新的可执行文件,并在后台运行。

HoUnix的博客 288

【LeetCode 105 106 889】重建二叉树(给定树的前中后序遍历方式中的两种来重建二叉树)

树的常见遍历方式有:前序遍历,中序遍历,后序遍历,层序遍历,关于这些遍历方式的递归和非递归实现:https://blog.csdn.net/Applying/article/details/84982712 现在,如果给定前中后序遍历方式中的两种,如何重建二叉树呢? 文章目录从前序和中序遍历构建二叉树从后序和中序遍历构建二叉树从前序和后序遍历构建二叉树 从前序和中序遍历构建二叉树 这个是三种情况中...

卤小蛋学编程 1006

linux内核学习(八)---摄像头框架移植(上)

本章来开始进行摄像头的移植,同时回顾一下V4L2的整个框架

文艺小少年的博客 112

【LeetCode 89】格雷编码 构建法和自然二进制编码转化法

题目: 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。 解题: 首先,补充一下格雷码的含义:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码。例如,位数为2格雷码的其中一个序列:00,01,11,10,它们任意两个相邻的数值,只有一个位数不同。 ...

卤小蛋学编程 1003

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

链表相关题目总结(含leetcode链表题Java代码)

链表是最常见的数据结构之一,下面主要总结题目,不涉及基本的数据结构的介绍 文章目录1. 常见的链表操作题目1.1 链表倒置(leetcode 206)1.2 两个有序链表的合并(leetcode 21)2. leetcode 其他相关题目No.83 Remove Duplicates from Sorted ListNo.237 Delete Node in a Linked List (删除链...

卤小蛋学编程 883

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【LeetCode 983】门票的最低费用 Minimum Cost For Tickets

题目: 即,给定一个数组代表你一年中的什么时候会去电影院,给定另外一个数组代表一日票,七日票,跟三十日票的金额,要求出如何买票,才能使花费最少。 思路: 明显看出这个是一个动态规划的题目,因此我需要两步曲来完成,首先是状态的定义,我们发现,比如 days[1,2,3,5],我们要输出的是第5天所花费的最少金额,而且 days是严格递增的,所以我们只要求出第days[days.length - ...

卤小蛋学编程 733

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【LeetCode 1014】最佳观光对 Best Sightseeing Pair

LeetCode 1014题,属于数组类型的题目,题意: 翻译成中文,就是要找数组中的两个点,满足: A[i] + A[j] + i - j的值最大 且 i < j 思路: 最快速的想法,就是直接暴力求解: 因为实际上就是求符合题意的两个点能获得的最大值,直接两个循环: public int maxScoreSightseeingPair(int[] A) { ...

卤小蛋学编程 622

【LeetCode 136 137 260】 只出现一次的数字Ⅰ、Ⅱ、Ⅲ (Single Number)

LeetCode 第136、137、260刚好都是同一类型的题目:只出现一次的数字,放在一起进行整理 文章目录136. 只出现一次的数字Ⅰ137. 只出现一次的数字Ⅱ260. 只出现一次的数字Ⅲ 136. 只出现一次的数字Ⅰ 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗...

卤小蛋学编程 599

【LeetCode 45 55 1306】Jump Game I,II,III【JAVA】

跳跃游戏,合计三道题。 55. Jump Game 1. 题目 运行结果 45. Jump Game II 1. 题目: 运行结果 运行结果 1306. Jump Game III 1. 题目 运行结果

卤小蛋学编程 414

【LeetCode Top 100】56. Merge Intervals【Medium】【JAVA】

1. 题目 2. 题意 题目很好理解,就是输入多个时间碎片,现在需要尽可能把碎片进行合并,求合并后的结果。 3. 思路 一个比较容易想到的思路,维护一个当前的合并之后的时间碎片组,通过遍历所有的时间碎片,不断向合并之后的时间碎片组加入新的时间碎片,并将其进行合并整理即可。最佳的时间复杂度为O(n),即每次加入的碎片都可以进行合并,维护的合并之后的时间碎片组永远只有一个碎片。最差的时间复杂度为O(...

卤小蛋学编程 391

【LeetCode】Best Time to Buy and Sell Stock Ⅰ、Ⅱ、Ⅲ【Java】

121. Best Time to Buy and Sell Stock 题意为只可买入一次,并卖出一次,要求获取的利润最高。最简单的思路就是两层循环,比较每一个数与后面的数的差值,以求出当前能获取的最大差值,即为最大利润,算法的时间复杂度即O(n²)。我们可以考虑优化算法,我们每获取一个数时,我们其实只需要跟这个数之前最小的那个数做比较,就可以知道这个为出口时,能获取的最大利润值,再通过比较所...

卤小蛋学编程 374

【LeetCode Top 100】406. Queue Reconstruction by Height【Medium】【JAVA】

1. 题目 2. 题意 有 n 个 (h, k) 对,h 代表高度,k 代表这个对在队列中的位置,在它的位置前面,有 k 个对的高度,比它高或等高。例如 (7, 0),代表其高度为 7,在它前面有 0 个高度不小于它的对。(4, 4) 代表其高度为 4,在它前面有 4 个高度不小于它的对。 3. 思路 这道题,官方的提示是: 让你去找出最小高度的数的位置。 首先,我们先假设没有相同高度的对存在...

卤小蛋学编程 366

【LeetCode 1358】Number of Substrings Containing All Three Characters【Medium】【JAVA】

1. 题目 2. 题意 题目几个关键信息: 该字符串只包含’a’,‘b’,'c’三种字符 示例1中发现对于相同但是位置不同的子串,是按两个结果计算,无需去掉重复 该字符串长度默认大于3 3. 方法 3.1 思路 最简单的思路就是暴力法,直接两个循环,并判断结果字符串是否都包含了’a’,‘b’,'c’三种字符。但该方法时间复杂度较高,O(n²),因此考虑有没有简单的做法。 题目是求符合条件的子...

卤小蛋学编程 357

【LeetCode 225】用一个or两个队列实现栈

Implement Stack using Queues

卤小蛋学编程 340

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 214

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 325
上一篇: 【Spring Boot】1.简单Spring Boot应用启动Demo & 启动类扫描范围
下一篇: 【LeetCode Top 100】49. Group Anagrams【Medium】【JAVA】
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值