有没有一种有效的方法可以在恒定空间的有序范围数组中找到最频繁的数字

我必须从排序的范围数组中找到最频繁的数字(或模式)。该范围仅由包含开始和结束的数字组成。例如,arr[0] 可以包含数字 {0, 3},这意味着数字 {0, 1, 2, 3}。范围按起始编号排序,当起始编号相等时,它们按结束编号排序。两者按升序排列。

该数组填充了这些范围中的 n 个。我需要找到一种方法来找到出现在最多范围内的数字。

我已经想到了一个解决方案,可以一次遍历所有数字,但这是在 O(n * m) 中,其中 m 是范围的平均长度。对于我正在处理的大小,这是一个非常慢的算法。

我还研究了一些更快的解决方案,例如this,但是当您无法轻松找到第 k 个数字时,我想不出一种有效的方法来实现它,因为范围的大小可能大不相同。

我目前正在尝试在 C 中实现它,但非常感谢任何想法或资源链接。

以上是有没有一种有效的方法可以在恒定空间的有序范围数组中找到最频繁的数字的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>