这道题的正解是 单调栈 求无交换最大矩形,再用 稀疏表RMQ 处理至多一次交换,但是我们用朴素解法 O(n2) 向左右扩展(并可枚举一次交换)也能在考试时拿到一定的分数。
题意:直方图有 n 根宽为 1 的柱子,高度为 hi。允许至多交换任意两根柱子的高度一次,求能勾勒出的最大矩形面积。
朴素做法:
小华之前玩过一个游戏,在横轴上放了n 个相邻的矩形,每个矩形的宽度是 1 ,而第 i(1≦i≦n) 个矩形的高度为 hi,这 n 个矩形构成了一个直方图,在直方图中找出能够勾勒出来的矩形的最大面积。
这个游戏小华已经玩得很腻了,于是小华就想增加一下难度,现在有 1 次交换任意 2 个矩形的操作,请问在交换后,能够勾勒出的最大的短形面积能达到多少呢?
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册