微软面试题
一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
解法:
1> 求出5个数值中的最大和最小值 Max, Min.
2> 如果Min = Max = 0, 则是连续的。
3> 遍历整数数据将所有在Min 和 Max之间的数值求和sum, 包括min 和Max本身。
4> 如果sum的与5个元素的和相等,则说明5个元素是相邻连续的。
算法时间复杂度为O(N), 空间复杂度为O(1)