一道微软面试题

来源:互联网 发布:淘宝开店规定 编辑:程序博客网 时间:2024/05/17 00:03

一个整数数列,元素取值可能是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)