一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
2012-10-07 22:51
1496 查看
一个长度为N的整形数组,数组中每个元素的取值范围是[0,N-1],写一个算法判断数组中是否存在重复的数字
把每个数放到自己对应序号的位置上,如果其他位置上有和自己对应序号相同的数,那么即为有重复的数值。
当没有重复数值出现时,可以看做一种特殊的排序。
bool IsDuplicateNumber(int *array, int n) { if(array==NULL) return false; int i,temp; for(i=0;i<n;i++) { while(array[i]!=i) { if(array[array[i]]==array[i]) return true; temp=array[array[i]]; array[array[i]]=array[i]; array[i]=temp; } } return false; }
把每个数放到自己对应序号的位置上,如果其他位置上有和自己对应序号相同的数,那么即为有重复的数值。
当没有重复数值出现时,可以看做一种特殊的排序。
相关文章推荐
- 给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字。(原数组不必保留)
- 面试题:给定一个长度为N的数组,其中每个元素的取值范围都是1到N。判断数组中是否有重复的数字
- 在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入 一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的 元素往前挪。(让空出的位置在最后)
- 笔试算法题(29):判断元素范围1到N的数组是否有重复数字 & 计算整数的7倍
- (六)一个判断整形数组中是否有重复数字的简单算法
- C++ - 一个非递减数组,下标从0到n,元素的取值范围为从0到n的整数,判断其中是否有重复元素
- 判断一个整数数组中是否有重复数字出现的O(n)时间复杂度算法
- 一个数组arr,长度为N,N小于10^8,里面数字的范围是1~N,是否有重复,并统计出来
- 假设数组a有n个元素,元素取值范围是1~n,如何判定数组是否存在重复元素
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 判断一个int数组中的元素是否存在重复
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
- 12、一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。 请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻。
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{
- 判断一个int数组中的元素是否存在重复
- 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
- 如何判断一个整数数组中是否有重复元素
- 取值为[1,n-1]含n个元素的整数数组至少存在一个重复数,找出一个重复元素
- 如何在前端用js判断一个元素在一个数组中是否存在
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)