微软面试题

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

posted @ 2012-09-10 22:06  爱也玲珑  阅读(247)  评论(0编辑  收藏  举报