本题中每个时段对应数组中的一个元素,元素取值为 1~5 表示 5 种能源。我们要找一个连续的子数组,使得其内部出现的不同能源种类数不超过 2,并让子数组长度尽可能大。
这是一个典型的**滑动窗口(双指针)**问题:
left、right 维护一个窗口 [left, right],right 向右扩展,把 nums[right] 纳入窗口。cnt[1..5] 记录窗口内每种能源出现的次数,并用 kinds 维护「当前窗口内不同能源的种类数」。cnt[v]==0),则 kinds++;计数器加一。某智慧园区管理系统记录了 N 个连续的能源使用时段,每个时段使用的能源类型用整数表示(1=太阳能,2=风能,3=电能,4=天然气,5=地热能)。
为了优化能源配置,管理员需要分析:在这 N 个时段中,连续使用不超过 2 种能源的最长时段长度是多少?
请编写程序计算这个最大长度。
输出最长连续时段的长度。
如果输入为空,则输出 0
输入
[1,2,1,2,3,2,2,2]
输出
5
说明
[2 3 2 2 2](下标 3 到 7),长度 5输入
[1,2,3,4,5]
输出
2
说明
最长的满足条件的连续时段是 2,因为每个时段都不一样。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册