问题:
正在进行员工投票以选择下一位董事会成员:
员工只能通过选择那些人来投票给一名被提名者 唯一员工编号(员工编号为整数> = 0)
投票存储在数组
获得最多选票的人将被选为下一个 董事会成员
选择董事会成员的最有效算法是什么?
子问题:如果我们知道候选人的人数少于选民人数,那会有更有效的算法吗?
可能的解决方案?
在这种情况下使用哈希表是否有意义,因为每个被提名者都有一个唯一的ID?
或者我们可以先对数组进行排序(假设数组未初始排序),然后通过遍历数组并跟踪最大计数器来跟踪获胜者:
投票[id] = [1,1,1,2,2,3,3,3,3,4]
所以只需遍历整个数组,并且对于voterID = 3
,maxCount = 4因此,3是赢家?
答案 0 :(得分:2)
经典空间与性能权衡。
哈希表通过数据(N)进行一次传递。 排序+计数需要(N logN + N)。