伪代码找到重复的数字?

时间:2010-08-05 10:06:46

标签: arrays

数组总共有101个值。此数组包含1到100之间的数字,并且一个数字重复(两次)。写下伪代码以找到重复的数字。

4 个答案:

答案 0 :(得分:0)

  1. 您可以散列值并检测 碰撞
  2. 您可以对数组进行排序然后循环 它找到重复
  3. 你可以搜索数组(长和 慢!)
  4. 如果你想要聪明,请看看哈希。如果你想轻松安全地玩它,用合并排序对列表进行排序然后循环索引可能是最好的。

答案 1 :(得分:0)

我将所有索引加起来[0] - > [100]找出1 + 2 + 3 ... + 100应该等于从你的结果中减去那个,你得到了重复的数字。

所以你只需要一个简单的

forwhile循环遍历每个索引然后减去2并得到结果。

像...一样的东西。

q = 0;
p = 101 * 50;
for(i<=100; i <array.length; i++){
 q += q + array[i]
 }
 repeating number = q-p;

答案 2 :(得分:0)

试试这个(C#):

int[] array = ... ; // initialize appropriately
var hashSet = new HashSet<int>();
var indexOfDuplicate = -1;
for (var i = 0; i < array.Length; i++) {
   if (hashSet.Contains(array[i])) {
      indexOfDuplicate = i;
      break;
   }
   hashSet.Add(array[i]);
}
var duplicateNumber = array[indexOfDuplicate];

使用此解决方案,您将获得重复数字的索引(第二次出现)和重复数字。

答案 3 :(得分:0)

设置集;

对于数组中的每个p {   set.add(P); }

打印(集);