当前位置: 首页 > 面试题库 >

计算整数数组中的重复元素

刘明朗
2023-03-14
问题内容

我有一个整数数组crr_array,我想计算重复出现的元素。首先,我读取数组的大小,并使用从控制台读取的数字对其进行初始化。在数组中new_array,我存储了重复的元素。该数组times存储元素连续出现的次数。然后,我尝试搜索重复序列并以特定格式打印它们。但是,它不起作用。

// Get integer array size
Scanner input = new Scanner(System.in);
System.out.println("Enter array size: ");
int size = input.nextInt();

int[] crr_array = new int[size];
int[] new_array= new int[size];
int[] times = new int[size];

// Read integers from the console
System.out.println("Enter array elements: ");
for (int i = 0; i < crr_array.length; i++) {
    crr_array[i] = input.nextInt();
    times[i] = 1;
}

// Search for repeated elements
for (int j = 0; j < crr_array.length; j++) {
    for (int i = j; i < crr_array.length; i++) {
        if (crr_array[j] == crr_array[i] && j != i) {
            new_array[i] = crr_array[i];
            times[i]++;
        }
    }
}



//Printing output
for (int i = 0; i <  new_array.length; i++) {
    System.out.println("\t" + crr_array[i] + "\t" +  new_array[i] + "\t" + times[i]);

}

我希望输出看起来像这样:

There are <count_of_repeated_element_sequences> repeated numbers 
<repeated_element>: <count> times
...

例如:

There are 3 repeated numbers:
22: 2 times
4: 3 times
1: 2 times

如何找到重复的元素及其计数?如何如上所示打印它们?


问题答案:

字典(Java中的HashMap)可以轻松解决此类问题。

  // The solution itself 
  HashMap<Integer, Integer> repetitions = new HashMap<Integer, Integer>();

  for (int i = 0; i < crr_array.length; ++i) {
      int item = crr_array[i];

      if (repetitions.containsKey(item))
          repetitions.put(item, repetitions.get(item) + 1);
      else
          repetitions.put(item, 1);
  }

  // Now let's print the repetitions out
  StringBuilder sb = new StringBuilder();

  int overAllCount = 0;

  for (Map.Entry<Integer, Integer> e : repetitions.entrySet()) {
      if (e.getValue() > 1) {
          overAllCount += 1;

          sb.append("\n");
          sb.append(e.getKey());
          sb.append(": ");
          sb.append(e.getValue());
          sb.append(" times");
      }
  }

  if (overAllCount > 0) {
      sb.insert(0, " repeated numbers:");
      sb.insert(0, overAllCount);
      sb.insert(0, "There are ");
  }

  System.out.print(sb.toString());


 类似资料:
  • 我有一个样本的numpy数组,[0,0,2.5,-5.0,…]。在我的例子中,所有样本都是2.5的倍数。我想知道每个样本发生了多少次。或多或少像numpy.hist。在本例中,类似于:[-5.0,1],[0,2],[2.5,1],…]。

  • 如何计算数组中数字的平均值? 看看我是如何获取数据的; 我想知道每个阵列的平均值,所以: 我在React工作。我从React Redux中的选择器获取数据。我用它来计算每个用户的平均评论。 代码:

  • 我已经将代码中的read整数修复为不再是I而是一个单独的变量“index”,并理解为什么我会收到Over Ofbound异常,但我有点厚,不明白如何在添加哨兵值0的同时修复它。

  • 所以,这不是关于如何计算数字中的数字。它是如何计算每一个有多少。说: 多少个0,多少个1等等,我想把它放到树形图中 那我该怎么做呢? 数组将是任意大小的,所以我想我可以循环通过它,对于每个新的int,检查每个数字,如果那么等。但不确定如何增加KV映射中的值。

  • 我试图创建一个优先级队列,根据第一个元素的值对整数数组进行排序,但我遇到了一个问题,编译器抱怨在我的编译器lambda表达式中需要一个数组。知道我搞砸了什么吗?

  • 我有一个数组。如何按类型、名称和大小以及递增量找到双重许可。增加数量后删除相同的。