我是靠谱客的博主 虚幻小馒头,最近开发中收集的这篇文章主要介绍C语言题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。请找出数组中任意一个重复的数字。,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
对于在数组中寻找元素,哈希表无疑是最快的,
将数组元素的值转化为哈希表中对应元素的下标,
在对该哈希表中对应元素下标的值加一,
达到遍历哈希表的目的。
因为该数组的长度为n且数字的值都在n-1范围内
所以定义哈希表的长度就是数组长度。
定义完成后,还需要将哈希表中的数据置零,否则将影响判断。
int duplicate(int* numbers, int numbersLen)
{
int hash[numbersLen]; //定义哈希表
memset(hash,0,sizeof(hash)); //将哈希表置零
for(int i=0;i<numbersLen;i++) //遍历哈希表
{
++hash[numbers[i]]; //将每个数放入哈希表的下标
if(hash[numbers[i]]>1) //如果那个元素比一大,证明重复了
{
return numbers[i]; // 返回哈希表中对应数的下标
}
}
return -1; //否则返回无-1
}
最后
以上就是虚幻小馒头为你收集整理的C语言题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。请找出数组中任意一个重复的数字。的全部内容,希望文章能够帮你解决C语言题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。请找出数组中任意一个重复的数字。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复