我是靠谱客的博主 虚幻小馒头,最近开发中收集的这篇文章主要介绍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的范围内。请找出数组中任意一个重复的数字。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部