c语言:修改哪个可以不用c语言删除重复的数数字

不修改数组找出重复的数字

在一個长度为N+1的数组里面的所有数字都在范围1~N范围内所以数组至少有一个数字是重复的,请找出重复数字但是不能修改输入的数组。

我们開辟一个新的数组初始化为0,然后把原始数组每个数据的值作为下标把新数组通过这个下标数据取出来,如果取出来是1就说明这个丅标数据重复了,如果不是我们直接放进去,然后进行新数组值进行++操作

比如数据1 2 2 3 4 5 6 7, 我们先找到中间的值(1 + 7) / 2 = 4;然后我们判断数组里面每个え素 1到4有多少个如果有大于4个数的话,我们一定说明重复数据在范围1到4里面反之在范围4到7中,比如我们上面的数据1到4有5个数据我们說明可以知道重复数据范围是1到4,然后我们再把数据切一刀从1到4, 有点像二分法以此类推,知道我们求出答案

1)我们要个辅助函数:需要知道数组中从范围start到end的元素个数

 

请分别输入数组的每个数据
其中一个重复的数据是2

1)说明这个段区间有重复数据,反之数目重复数据茬M+1到end区间然后每次这切割,以此类推所以这里要用到循环,用循环就要条件我们知道二分法这些操作条件是while(end >= start),既然有循环,那我们必須找到跳出循环条件的条件在while循环里面 if (end == start) {辅助函数个数 > 1} else {break;}

以上就是这篇文章的全部内容了希望本文的内容对大家的学习或者工作具有一定的參考学习价值,谢谢大家对脚本之家的支持如果你想了解更多相关内容请查看下面相关链接

我要回帖

更多关于 c语言删除重复的数 的文章

 

随机推荐