有几种颜色的球。对于一种特定颜色,有超过一半的球具有这种颜色(> n / 2)。如何才能找到这种颜色只需要O(n)运行时间?
答案 0 :(得分:5)
答案 1 :(得分:1)
找出每个球的颜色并计算出来。如果您只想找到最常见的,那么这似乎根本不是一种排序。只计算每种颜色的球数。您可以使用哈希表,键是颜色,只是迭代点。还要跟踪颜色。
编辑: 在再次阅读之后,我意识到它没有回答这个问题。
A)您可以通过迭代每个可用的颜色(假设您正在制作颜色列表)来完成跟踪,因为将会有少于n个比较,在最坏的情况下它将是O(n )。
B)当你计算球数时,记录最大数量。每当它被击败时,用最高计数的当前颜色替换它。您可能希望跟踪颜色以及最高数字。这样你就可以在每次运行时进行比较。这也将是O(n),但会有更多的比较。