选择数组中最大票数的最快算法是什么?
What is the fastest algorithm to choose the max votes in an array?
问题:
正在进行员工投票以选择下一任董事会成员:
一个员工只能通过选择一个人来投票给一个被提名人
唯一员工编号(其中员工编号是 >= 0 的整数)
票数存储在数组中
获得最多选票的人将被选为下一位
董事会成员
选择董事会成员最有效的算法是什么?
子问题:如果我们知道候选人数小于选民数怎么办,有没有更高效的算法?
可能的解决方案?
在这种情况下使用散列 table 是否有意义,因为每个被提名人都有一个唯一的 ID?
或者我们可以先对数组进行排序(假设数组最初未排序),然后通过遍历数组并跟踪最大计数器来跟踪获胜者:
票数[id] = [1,1,1,2,2,3,3,3,3,4]
所以只需遍历整个数组,maxCount = 4 for voterID = 3
那么,3是赢家?
经典 space 与性能权衡。
哈希 table 遍历数据 (N)。
排序 + 计数需要 (N logN + N).
问题:
正在进行员工投票以选择下一任董事会成员:
一个员工只能通过选择一个人来投票给一个被提名人 唯一员工编号(其中员工编号是 >= 0 的整数)
票数存储在数组中
获得最多选票的人将被选为下一位
董事会成员
选择董事会成员最有效的算法是什么?
子问题:如果我们知道候选人数小于选民数怎么办,有没有更高效的算法?
可能的解决方案?
在这种情况下使用散列 table 是否有意义,因为每个被提名人都有一个唯一的 ID?
或者我们可以先对数组进行排序(假设数组最初未排序),然后通过遍历数组并跟踪最大计数器来跟踪获胜者:
票数[id] = [1,1,1,2,2,3,3,3,3,4]
所以只需遍历整个数组,maxCount = 4 for voterID = 3
那么,3是赢家?
经典 space 与性能权衡。
哈希 table 遍历数据 (N)。 排序 + 计数需要 (N logN + N).