给定n个硬币,其中一些是较重的,使用O(log ^ 2 n)称重来查找重硬币数量的算法。请注意,所有重型硬币都具有相同的重量,而所有重型硬币也具有相同的重量。
您将获得一个余额,您可以使用它来比较两个不相交的硬币子集的权重。请注意,余额仅指示哪个子集较重,或者它们是否具有相等的权重,而不是绝对权重。
答案 0 :(得分:4)
我不会放弃整个答案,但我会帮你分解。
O(log(n))
算法来查找单个重币。O(log(n))
算法,将一个集合分成两组,重数和亮数相等,最多剩余两个(当没有剩余数量时)。提示:
O(log(n))
提示二进制搜索O(log^2(n))
两个O(log(n))
算法来结束{{1}}吗?