计算列表中最常见整数乘积的好方法
本文关键字:方法 整数 列表 常见 计算 | 更新日期: 2023-09-27 18:16:30
假设我有一个n个整数的数组,我应该返回最常见整数的乘积。
示例:(2,3,4,2,2,1,4)-返回8.
我可以使用普通数组来存储值。
如果我想有运行时优化,我应该使用哈希表在c#或字典?这会帮助我进行空间优化吗?或者是否有其他方法来进行空间优化?
您可以进行速度优化或空间优化,但不能同时进行。
如果你想要空间优化,你可以对数组进行排序,然后循环查找相同值的最长序列。除了数组之外,这将需要很少的存储空间,但它将改变原始数组。排序通常是O(n log n),然后循环将是O(n)。
如果您想要速度优化,您可以使用字典来计算出现次数,然后获得最大的计数。这将平均需要n * 10字节的字典,但它保持原始数组不变。计数将接近于O(n),并且找到最大计数将是O(n)。
这看起来像是作业,所以我只是粗略地描述一下我将如何做。然后你可以试一试,如果你有什么问题可以再来问。
我会在某种类型的表中(Dictionary<int, int>
是最简单的选择)将这些数字与它们遇到的次数联系起来。然后,只需取计数最高的一个(从现在开始我们称该计数为n
),并将该数字乘以自身的n
。