news 2026/5/6 9:19:43

盛水最多的容器(滑动窗口 双指针)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
盛水最多的容器(滑动窗口 双指针)

这道题当然可以暴力求解,O(N^2),但是有时候并不会通过,因此要想一个时间复杂度为O(N)的方法。如果说用滑动窗口肯定会有人会有疑问,这怎么用?下面直接说解法:

首先left与right分别指向数组的两边,计算当前矩形面积大小记录,哪一个对应的值小,哪个向中间移动,记录当前矩形面积,更新最大矩形面积,以此类推。

那么如何证明这种贪心性的正确性呢?

假设初始状态下,右指针left对应数组数字为x与左指针right对应y,left<right,并且有x<=y,那么这时矩形面积由min(x,y)*(right-left)得出,如果我们不动left,而是让右指针向左移动,无论怎么都不可能使得新矩形面积大于现在的面积,所以要让较小的left向中间移动。此时问题的规模减小1,又变成了新的问题。直到问题规模减为0。相当于是从一堆极值(每一个规模中)中找到一个最大值!

class Solution { public: int maxArea(vector<int>& height) { int max=0; int left=0; int right=height.size()-1; int cur; while(left<right){ cur=min(height[left],height[right])*(right-left); max=max>cur?max:cur; if(height[left]<height[right]) left++; else right--; } return max; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 14:06:10

ComfyUI-SeedVR2视频超分辨率技术全面指南

项目亮点速览 【免费下载链接】ComfyUI-SeedVR2_VideoUpscaler Non-Official SeedVR2 Vudeo Upscaler for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-SeedVR2_VideoUpscaler &#x1f525; 核心优势&#xff1a;基于SeedVR2算法的专业级视频放大解决…

作者头像 李华
网站建设 2026/5/2 15:55:25

Qt关闭主窗体与quit()的深度解析

在Qt框架中&#xff0c;关闭主窗体&#xff08;通过close()方法&#xff09;和调用QApplication::quit()都是退出程序的方式&#xff0c;但它们在触发机制、资源管理、事件流程等方面存在显著差异。以下从技术实现和实际影响两个维度详细分析&#xff1a;1. 触发机制与事件循环…

作者头像 李华
网站建设 2026/5/1 8:20:37

Ubuntu进程终止全解析

在Ubuntu中&#xff0c;使用pkill -f 应用程序名终止应用程序的过程涉及信号传递、进程管理、资源回收等多个系统级操作。以下是详细的技术解析&#xff1a;1. 命令执行与信号发送pkill -f的工作原理pkill通过遍历系统进程列表&#xff08;如/proc文件系统&#xff09;&#xf…

作者头像 李华
网站建设 2026/5/1 9:35:45

5步掌握深空摄影堆栈神器:DeepSkyStacker让宇宙之美触手可及

想要拍摄出令人惊叹的深空星图却总是被噪点和模糊困扰&#xff1f;DeepSkyStacker这款专业的深空摄影堆栈工具能够帮你轻松解决这些问题。作为一款完全免费的开源软件&#xff0c;它通过智能的图像对齐和堆栈处理&#xff0c;让业余天文爱好者也能创作出专业级的宇宙影像。 【免…

作者头像 李华
网站建设 2026/5/5 16:11:25

17、RAC 环境下的应用开发技术解析

RAC 环境下的应用开发技术解析 在 RAC(Real Application Clusters)环境中进行应用开发,需要考虑诸多特定的开发概念和技术。本文将详细介绍 RAC 环境下应用开发的相关要点,包括实例与服务识别、多 SGA 应用、存储考虑、节点亲和性,以及一些高级编程技术,如透明应用故障转…

作者头像 李华
网站建设 2026/5/6 20:06:02

34、Python 数据持久化:简单与关系序列化方法详解

Python 数据持久化:简单与关系序列化方法详解 在 Python 编程中,数据持久化是一个重要的话题,它允许我们将数据保存到磁盘,以便后续使用。本文将介绍几种常见的数据持久化方法,包括简单序列化和关系序列化,并通过具体的代码示例进行详细说明。 简单序列化 简单序列化主…

作者头像 李华