当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻
2014-06-16 00:39
381 查看
一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。
请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
注意:
- 5个数值允许是乱序的。比如: 8 7 5 0 6
- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出现。
- 复杂度如果是O(n2)则不得分。
这题,其实只要找到这五个数中的最大值和最小值以及记录零的个数就可以了。
最后也就下面这几种情况而已,当然,给的数组时乱序的,但没关系,只要增加两个变量来记录最大值和最小值就OK了,
时间复杂度O(n).
0的个数 序列方式
0 12345
1 12340,12305
2 12300,12040,12005
3 12000,10300,10040,10005
4 10000,00005
5 00000
PS:菜鸟学习中,如有错误还望各位道友批命指正,万分拜谢。
请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
注意:
- 5个数值允许是乱序的。比如: 8 7 5 0 6
- 0可以通配任意数值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出现。
- 复杂度如果是O(n2)则不得分。
这题,其实只要找到这五个数中的最大值和最小值以及记录零的个数就可以了。
最后也就下面这几种情况而已,当然,给的数组时乱序的,但没关系,只要增加两个变量来记录最大值和最小值就OK了,
时间复杂度O(n).
0的个数 序列方式
0 12345
1 12340,12305
2 12300,12040,12005
3 12000,10300,10040,10005
4 10000,00005
5 00000
PS:菜鸟学习中,如有错误还望各位道友批命指正,万分拜谢。
#include<stdio.h> bool ifisBorderUpon( int arr[] ) { int max_num=0; int min_num=65535; int zero_count=0; for(int i=0; i<5 ; i++ ) { if(arr[i]==0) { zero_count++; } else { if(arr[i]>max_num) max_num=arr[i]; if(arr[i]<min_num) min_num=arr[i]; } } //count==4||5 肯定会连续的 if(zero_count==4||zero_count==5) { return true; } //当count==0时,五个数只能连续 else if(zero_count==0) { if((max_num-min_num)==4) return true; return false; } //else if(zero_count==1 || zero_count==2 ||zero_count==3) //如果放上这个条件,编译器会有警告有路径没有返回值,但其实count=012345,肯定会符合这边的判断条件的 else { if((max_num-min_num)<=4) { return true; } return false; } } int main() { int arr[5]={8,6,7,5,4}; if(ifisBorderUpon(arr)==true) printf("yes\n"); else { printf("no\n"); } getchar(); return 0; }
相关文章推荐
- 12、一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。 请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
- 设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
- 每日一道算法题:判断5个数值是否连续相邻
- 判断数列中任取的5个数是否连续相邻
- 判断这5个数值是否连续相邻
- 判断这5个数值是否连续相邻
- 判断这5个数值是否连续相邻
- 判断这5个数值是否连续相邻
- 如何判断一个数组中的数值是否连续相邻
- java 判断一个数组中的数值是否连续相邻的方法
- 如何判断一个数组中的数值是否连续相邻
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- java 判断一个数组中的数值是否连续相邻
- 判断一个数组中的数值是否连续相邻
- 数组之判断一个数组中的数值是否连续相邻
- 输入5个数字,如果数组中有0则0可以替代任何数字,判断该数组中的数字是否是连续数字。
- 剑指Offer系列-面试题44:判断5个数是否连续
- 有一个数列(1)循环输出数列的值(2)求数列中所有数值的和(3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含次数
- 判断数组中的数字是否连续相邻
- 判断数组中的数值是否连续