关于大 O 表示法,解决以下问题的最佳方法是什么?
给定一个大小为 N 的字符串数组。遍历该数组并返回一个字符串,该字符串包含在数组中重复次数最多的字符串。此外,返回的字符串应该重复字符串在数组中的次数。前任。如果在数组中“Bob”是找到最多的字符串,并且找到了 3 次,则返回的字符串应该是“BobBobBob”
在考虑如何做到这一点时,我正在考虑使用 HashMap 或其他强制唯一键值的东西,将字符串存储为键,将频率存储为值。当一切都说完之后,我就需要遍历地图比较值..
总的来说,这会给我 O(n) + O(n) ...我只是想知道是否有更好的方法来做到这一点
编辑:
我知道你不能比 O(n) 做得更好,但这里的问题是,一旦我迭代初始数组以构建 HashMap,我将不得不重新迭代 hashmap 以确定哪对具有最高值,这将再次是 O(n) .. 基本上有没有办法做到这一点,我只需要迭代整个列表一次