【问题标题】:How do I find the number that occurs the most in an array? [duplicate]如何找到数组中出现次数最多的数字? [复制]
【发布时间】:2021-04-21 13:30:13
【问题描述】:
const int NUM_MAX = 100;
const int HOWMANY = 30;

int main()
{
    vector<int> myVector;
    
    int counters[NUM_MAX] = { 0 };
    
    //to print out 15 numbers per line
    int x = 15;
    
    //seed random number generator
    srand(time(0));
    
    cout << "Array of 30 Random Numbers: "<< endl;
    
    for (int i = 0; i < HOWMANY; i++)
    {
        int myRandom = rand() % NUM_MAX;
        myVector.push_back(myRandom);
        
        int thisVal = myVector[i];
        cout << thisVal << " ";
        if (i % x == 0)
            cout << "\n";
    }
    
    cout << "     " << endl;
    
    return 0;
}

我刚开始学习向量和数组,我的老师为我们设置了counters 数组,但我不知道该怎么做。我必须在 30 个随机生成的数字中找到出现次数最多的数字,并且我必须计算该数字出现了多少次。我很迷茫。

【问题讨论】:

  • 你不需要向量。您只需要在第一遍中为每个观察到的数字增加counters[myRandom]++。然后添加另一个 for 循环,在 counter 中查找具有最大值的索引。
  • 假设您有一个包含 6 个数字的数组,即 1,2,4,5,2,3。您如何“手动”(无需代码)确定数组中出现次数最多的数字?
  • How to remove duplicate char in string in C (忽略标题,了解如何使用 频率数组——这就是你的老师希望你对 counters[] 数组做的事情)你std::map 可以做同样的事情,但是如果你只是学习向量,普通的旧频率数组就可以了。

标签: c++


【解决方案1】:

我认为你让你自己的问题变得更难,通过让你的问题更容易思考,你可以更快地解决你的问题,正如我的朋友所说,在这个问题中,你可以将一个数组定义为一个计数器,并计算其中的每个数字索引,就像页面顶部所说的那样:)

【讨论】:

    【解决方案2】:

    你描述的是找到数组的模式。

    正如@selbie 提到的,您需要增加 counters[myRandom]++ 并找到 counters 数组的最大值。最大值的位置为模式(最大出现次数),值为出现的次数。

    例如:让我们将 MAX_VALUE 设为 5,将 HOWMANY(变量名的错误选择虽然 :P)设为 10

    设随机生成的数组为

    1 5 3 2 1 3 4 3 3 3
    

    因此,在每次循环迭代中,您将更新计数器变量为 counter[number]++。例如。在这种情况下,它将是

    counter[0] = 0
    counter[1] = 2
    counter[2] = 1
    counter[3] = 4
    counter[4] = 1
    counter[5] = 1
    

    因此,数组的最大值位于位置 3 。所以模式(最大出现元素)为3,出现次数为4。

    注意 恕我直言,您的问题表明您是向量和数组的新手。但是,正如@selbie 提到的,这里的问题旨在检查您将如何计算模式而不是了解向量的操作。一开始的编程似乎更倾向于花哨的库和硬语法,但它始终是所有编码问题的支柱的逻辑思维(算法)。

    【讨论】:

    • 非常感谢,我会采纳您的建议,并尝试更多地关注源代码背后的逻辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 2020-05-26
    • 2021-07-30
    • 2012-02-14
    • 1970-01-01
    相关资源
    最近更新 更多