✏️ 纠错
第 147 题 / 共 155 题

题目描述

对于 k 个整数构成的数组 [b1​,b2​,…,bk​],如果对 1≤i<k 都有 bi+1​=bi​+1,那么称数组 b 是一个连续段。

给定由 n 个整数构成的数组 [a1​,a2​,…,an​],你可以任意重排数组 a 中元素顺序。请问在重排顺序之后,a 所有是连续段的子数组中,最长的子数组长度是多少?

例如,对于数组 [1,0,2,4],可以将其重排为 [4,0,1,2],有以下 10 个子数组:

[4],[0],[1],[2],[4,0],[0,1],[1,2],[4,0,1],[0,1,2],[4,0,1,2]

其中除 [4,0],[4,0,1],[4,0,1,2] 以外的子数组均是连续段,因此是连续段的子数组中,最长子数组长度为 3。

输入格式

第一行,一个正整数 n,表示数组长度。

第二行,n 个整数 a1​,a2​,…,an​,表示数组中的整数。

输出格式

一行,一个整数,表示数组 a 重排顺序后,所有是连续段的子数组的最长长度。

输入输出样例

输入 #1

4
1 0 2 4

输出 #1

3

输入 #2

9
9 9 8 2 4 4 3 5 3

输出 #2

4

说明/提示

对于 40% 的测试点,保证 1≤n≤8。

对于所有测试点,保证 1≤n≤105,−109≤ai​≤109。

📝 题目解析

【题目大意】给定长度为n的数组,可任意重排元素顺序,求重排后所有 “连续段” 子数组的最长长度

【考纲知识点】数组排序、连续序列遍历

【解题思路】先对数组排序(实现 “任意重排” 的等价操作),再遍历数组统计连续递增(后一个元素等于前一个元素+1)的序列长度,同时跳过重复元素,最终记录并输出最长的连续序列长度。