一个具有两个参数(数组,排名)并返回数组的函数。
该函数应根据排名返回重复的数字,例如: 如果等级参数为5,则该函数将返回5个最多的重复数字,即使有10个重复的数字,该函数也应仅返回5个最重复的数字,因为等级= 5。
我正在寻找有效的解决方案O(N)来解决此问题。
我知道我们可以使用哈希映射进行计数,然后对其进行排序,然后将返回的数组限制为“ ranking”变量,但此解决方案不是O(N)。
答案 0 :(得分:0)
您无需排序。计算完所有重复次数后,您只能遍历哈希映射,并且最多保留5次。
O(N + RN)= O(RN) (这是最坏的情况。只有没有重复的数字,第3步的通过才会是N。如果有,则小于N,但这没关系)
与以前相同,但是在执行步骤1的同时执行步骤3。 您在第3步中跳过了哈希映射,但始终会执行O(RN)