news 2026/8/6 14:55:40

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

作者头像

张小明

前端开发工程师

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/8/6 2:16:54

c++经典练习题-多分支

目录 1304. 冷饮的价格&#xff08;2&#xff09; 1044. 找出最经济型的包装箱型号 1039. 求三个数的最大数 1035. 判断成绩等级 1300. 小明暑假的零花钱 1322. 求数的量级&#xff1f; 1049. 汉译英 1391. 公交卡充值问题&#xff1f; 1668. 运动会成绩统计 1669. 上…

作者头像 李华
网站建设 2026/8/6 7:59:47

qt为什么转向用cmake放弃qmake

Qt 从 qmake 转向 CMake 是其构建系统战略的重大转型&#xff0c;这一转变在 Qt6 中全面落地。下面从 技术、生态、工程实践 三个维度&#xff0c;系统解释&#xff1a; 一、Qt 使用 CMake 的核心好处 1. 强大的跨平台与多编译器支持 CMake 原生支持&#xff1a; Windows&…

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

云屋音视频 SDK 凭何成为信创技术困局的 “破局者”?

云屋音视频 SDK&#xff1a;信创技术困局的破局先锋在信息技术应用创新不断加速的大环境下&#xff0c;企业对于音视频技术的需求层次显著提升&#xff0c;不再局限于基础功能&#xff0c;而是朝着国产化、安全合规以及自主可控的高阶方向发展。然而&#xff0c;传统音视频方案…

作者头像 李华
网站建设 2026/8/6 12:21:59

【怎么理解maven中的镜像和仓库?】

我们用大白话、最直接的方式来解释这个问题。 先看以下几个情况&#xff1a; 情况1&#xff1a;没有镜像&#xff08;就像网购国外直邮&#xff09; # 你想要一瓶可乐&#xff08;比如spring-core.jar&#xff09; # 你在中国&#xff0c;但可乐工厂&#xff08;中央仓库&#…

作者头像 李华