判断数组中的数值是否连续
2013-03-16 13:52
239 查看
#include<stdio.h> #include<stdlib.h> bool IsContinuous1(int *arr,int N) {/*整数数列,元素取值为0...65535中任意一个不重复的数,0可以出现多次 1、元素值可以乱序。 2、0可以匹配任何数值。 3、0可以多次出现。 4、全0算连续、只有一个非0也算连续。 */ int min = -1,max = -1; for(int i = 0;i < N; ++i) { if(arr[i] != 0) { if( min > arr[i] || -1 == min) min = arr[i]; if( max < arr[i] || -1 == max) max = arr[i]; } } if(max - min > N - 1) return false; else return true; } int cmp(const void *a,const void *b) { return *(int *)a - *(int *)b; } bool IsContinuous2(int *arr,int N) {//其他条件同上,但是允许有重复值 qsort(arr,N,sizeof(int),cmp); int zeronum = 0; //0的数目 int i = 0; int gap = 0; //数组arr中最大元素和最小元素只差 while( arr[i++] == 0) zeronum++; i--; gap = arr[N - 1] - arr[i]; if(gap > N -1 && gap > zeronum) return false; else return true; } int main() { int array[] = {1,3,2,5,7,0,8,2,3,5,7,7,7,7,7,5}; int len = sizeof(array) / sizeof(array[0]); if(IsContinuous2(array,len)) printf("连续\n"); else printf("不连续\n"); return 0; }
相关文章推荐
- 如何判断一个数组中的数值是否连续相邻
- java 判断一个数组中的数值是否连续相邻的方法
- 如何判断一个数组中的数值是否连续相邻
- 判断一个数组中的数值是否连续相邻
- java 判断一个数组中的数值是否连续相邻
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 数组之判断一个数组中的数值是否连续相邻
- 输入5个数字,如果数组中有0则0可以替代任何数字,判断该数组中的数字是否是连续数字。
- js如何判断一组数字是否连续,得到一个临时数组[[3,4],[13,14,15],[17],[20],[22]];
- 每日一道算法题:判断5个数值是否连续相邻
- 当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻
- 设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
- 判断一个数组中的数字是否连续
- java判断循环数组是否连续并获取不连续的项以及重复项
- 判断这5个数值是否连续相邻
- 用数组实现堆栈 && 判断接收到的数据师是否连续
- java判断循环数组是否连续并获取不连续的项以及重复项
- java判断循环数组是否连续并获取不连续的项以及重复项
- Python实现变量数值交换及判断数组是否含有某个元素的方法
- 判断这5个数值是否连续相邻