题目:一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现;0是例外,可以反复出现。
请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻
注意:
- 5个数值允许是乱序的。比如: 8 7 5 0 6
- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出现。
分析:由于数列不允许重复,那么非0序列中n个元素中,如果最大值-最小值=n-1,那么数列有序,如果有0的序列,非0的最大值-非0最小值<n-1,那么数列一定有序。本题转换为求数列中非0的最大值和非0最小值。复杂度O(n)