KWJ*_*104 9 language-agnostic algorithm
我最近看到一个公司的面试问题说:
一群人,你可以打电话Know(i, j)询问是否i有人知道j,返回值是true(i知道j)或false(i不知道j).找到其他人都认识的人,但他不认识任何人.
Know(i, j)
i
j
true
false
我可以想到一个O(N^2)实现,这样你就可以将每个人与每个人的方法相匹配,从而消除任何真正认识某人的人.然而,我想不出比这更快的实现.
O(N^2)
任何人都可以提供帮助或提示吗?
Nab*_*abb 9
我们可以通过简单的算法在线性时间内完成此操作.在两次查询中,我们可以消除至少一个候选人 - 选择两个人,并i用Know(i,j)或删除人~Know(j,i).
Know(i,j)
~Know(j,i)
归档时间:
13 年,7 月 前
查看次数:
421 次
最近记录: