您的位置:首页 > 其它

一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。

2013-03-19 16:24 561 查看
一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。

请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。

注意:

- 5个数值允许是乱序的。比如: 8 7 5 0 6

- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4

- 0可以多次出现。

- 复杂度如果是O(n2)则不得分。

思路:

非0最大-非0最小+1
<=5 ==> 非0最大-非0最小 <=4

#include<stdio.h>
int main()
{
int a[5] = {1,3,6,0,0};
int i = 0;
int min = 65535;
int max = 0;
for(; i<5; i++)
{
if(a[i] != 0)
{
if(min > a[i])
min = a[i];
if(max < a[i])
max = a[i];
}
}

int diff = max - min;
if(diff <= 4)
printf("OK!\n");
else
printf("NO!\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐