【问题标题】:Using set and map to solve the mode problem?使用 set 和 map 解决模式问题?
【发布时间】:2019-04-21 17:09:46
【问题描述】:

所以我在作业中遇到了这个问题,它要求我分别使用 set 和 map 来解决数组中模式的数量(在一组数据中找到出现频率最高的数据)。它还需要测试并显示无模式、1 模式和多种模式的解决方案,这些实际上是我所拥有的所有说明(老师并不热衷于具体说明)。据我了解, set 或 map 都不允许重复值,那么如何甚至存在模式?我很不确定。有人可以给我一些关于这个的见解,它应该可行吗?我将不胜感激任何启动此操作的指示。谢谢!!

【问题讨论】:

  • 什么是“解决数组中的模式数”??你还有什么吗??
  • 嗨,Aalejandro,我很抱歉出现歧义。就是在一组数据中找出出现频率最高的数据。
  • 对于set 看看这个:cplusplus.com/reference/set/set/find,对于map cplusplus.com/reference/map/map/find。这是一个简单的例子,可以给你一个起点。让我知道这对你有什么用:D
  • 我很好奇,mode 是集合论(或计算机科学)中的定义术语吗?谷歌似乎没有找到该术语的任何内容。是的,set 和 map 都不允许多个值(映射的键)使 mode 无用(根据您的定义)。

标签: c++ dictionary stl set


【解决方案1】:

解决方案非常简单,你只需要一个映射来计算每个整数出现的次数,然后遍历映射以找到计数最多的键。解决方案是这里的最后一个:

https://www.geeksforgeeks.org/frequent-element-array/

至于集合的解决方案,您可能最好使用有序的多重集,这将使事物保持正确的顺序,然后使用可变的最大计数和当前计数进行迭代。当当前计数大于最大计数时,将 most_freq(另一个变量)替换为当前元素。这基本上是解决方案。我可以在 3 分钟内完成此代码,但我希望你做好功课。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多