首页 > 解决方案 > 打印数组中的重复元素

问题描述

我想在动态数组中查找重复元素。在大多数情况下它都有效,但它如何适用于这种情况。我在给定的数组中找到重复的元素。但是有一个问题是我的重复元素也可以重复。我该如何解决那部分。

      #include <iostream>

      int main() {
      unsigned n;
      std::cin >> n; 
      int count = 0;
      int* dynArr = new int[n];
      for (int i = 0; i < n; i++) {
          std::cin >> dynArr[i];
      }
      for(int i = 0; i < n; i++){
          for(int j = i + 1; j < n; j++){
               if(dynArr[j] == dynArr[i]){
                   std::cout<<dynArr[j]<<" ";
                   break;
               }
           }
       }
     }

这部分有问题。当我输入我的数组长度为 6 和元素 {1,1,2,1,2,2} 时。我得到了(1,1,2,2)。但我只需要得到1,2。

input 6
      1 1 2 1 2 2
output 1 1 2 2 

但必须是

output 1 2

标签: c++arraysdynamicduplicatesdifference

解决方案


这是一个简单而快速的解决方案。

  std::map<int,size_t> element_count;

  for(int i = 0; i < n; i++){
      if ( ++element_count[dynArr[i]] == 2 ){
               // Only report on the second occurrance
               std::cout<<dynArr[j]<<" ";
       }
   }

推荐阅读