今天面试的过程中,xxx公司的技术总监问了一个问题,本人觉得在某种情况下是可行的,但是貌似被否认了。求解释!
要求如下:从1-100W的数据,中间有且只有一个重复的,个数为100W零1,找出来即可。
我想的结果如下:假设数据是无序,但是1-100W之间有100W个数字,加上重复的一个,即100W零1.
步骤一、先将这100W零1按大小排序。
步骤二、首+尾=100W零1,取值往中间靠近。
步骤三、如果相加的和大于理论上的中间值(肯定是大于理论上的中间值)。则表示这两个数字中的一个必定是重复的。
然后分别用这两个数字,根据索引去取特定位置上的值来做判断即可得出。
如果题目是这样的,我觉得没错啊!
Q:如果100W条数据里面,只有一个是重复的,而且这些数值并不是像1、2、3、4... 这样,应该怎么去实现?