最长连续段
题目描述
对于k个整数构成的数组 [b<sub>1</sub>, b<sub>2</sub>,..., b<sub>k</sub>] ,如果对1≤i<k 都有b<sub>i+1</sub>=b<sub>i</sub>+1 ,那么称数组b 是一个连续段。
给定由n个整数构成的数组 [a<sub>1</sub>,a<sub>2</sub>,...,a<sub>n</sub>],你可以任意重排数组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个整数 a<sub>1</sub>, a<sub>2</sub>, ..., a<sub>n</sub>,表示数组中的整数。
输出格式
一行,一个整数,表示数组 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≤10<sup>5</sup>, -10<sup>9</sup>≤a<sub>i</sub>≤10<sup>9</sup>
本题为编程题,提交代码并运行通过测试点后判分。
正在加载题目数据…
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析