C++ 查找长度为n的数组中重复次数最多的元素 const int N=10; int main() { int arr[N]={4,4,6,4,6,6,7,9,9}; 对于(int i=0;i

C++ 查找长度为n的数组中重复次数最多的元素 const int N=10; int main() { int arr[N]={4,4,6,4,6,6,7,9,9}; 对于(int i=0;i,c++,arrays,C++,Arrays,) const int N=10; int main() { int arr[N]={4,4,6,4,6,6,7,9,9,9}; for (int i = 0; i < N; i++) for (int j=i+1; j<N; j++) { if (arr[i]==arr[j]) cout << arr[i]; } retur

  const int N=10;

  int main()
  {

    int arr[N]={4,4,6,4,6,6,7,9,9,9};

    for (int i = 0; i < N; i++)
        for (int j=i+1; j<N; j++)
        {
            if (arr[i]==arr[j])

              cout << arr[i];
        }


    return 0;
 }
然后迭代并找到重复次数最多的元素的计数,您可以这样做:

sort(arr, arr + n);
int-maxCnt=0;
int curCnt=1;
对于(int i=1;i
然后,当curCnt==maxCnt输出数时,再次迭代累积curCnt

int maxCnt = 0;
int curCnt = 1;
for (int i = 1; i < n; i++) {
 if (arr[i] == arr[i - 1]) curCnt++;
 else 
   {
     maxCnt = max(maxCnt, curCnt);
     curCnt = 1;
   }
}
maxCnt = max(maxCnt, curCnt);
curCnt=1;
对于(int i=1;i
  • 对未知数组大小(N)使用“基于范围的循环”
  • 使用
    std::map
    计算每个元素的计数
  • 代码如下:

    curCnt = 1;
    for (int i = 1; i < n; i++) {
     if (curCnt == maxCnt) cout << arr[i - 1] << ' ';
     if (arr[i] == arr[i - 1]) {
       curCnt++;
     }
     else curCnt = 1;
    }
    if (curCnt == maxCnt) cout << arr[n - 1] << endl;
    
    #包括
    #包括
    使用名称空间std;
    int main()
    {
    常量int arr[]{4,4,6,4,6,6,7,9,9};
    //获取每个元素的计数。
    地图元素计数;
    用于(施工自动和电气:arr)
    {
    元素计数[e]+=1;
    }
    //获得最高计数。
    int highestCount=0;
    用于(常数自动和e:elementCount)
    {
    
    无法将它们存储在
    std::set
    中,然后输出集合的内容?因此,请为(…){inventory[arr[i]+;}
    创建一个清单。
    (计算每个值显示的数量),然后对清单进行排序并挑选出顶部的X个元素。可能重复??请参阅:@MarcB的注释是正确的方法,如果数组中的数字范围较小。数组中的数字范围是多少?
    
    #include <map>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        const int arr[]{ 4,4,6,4,6,6,7,9,9,9 };
    
        // Get count for each element.
        map<int, int> elementCount;
        for (const auto& e : arr)
        {
            elementCount[e] += 1;
        }
    
        // Get the highest count.
        int highestCount = 0;
        for (const auto& e : elementCount)
        {
            cout << e.first << " " << e.second << endl;
            if (e.second > highestCount)
            {
                highestCount = e.second;
            }
        }
    
        // Get the elements with the hightest count.
        cout << endl << "Elements with the hightest count:" << endl;
        for (const auto& e : elementCount)
        {
            if (e.second == highestCount)
            {
                cout << e.first << " ";
            }
        }
        cout << endl;
        return 0;
    }