今天我试图解决一个Facebook 编程挑战。我遇到的挑战是“酒吧问题”,可以在这里找到。在挑战过程中,我的问题是理解他们提供的第一个例子。
问题可以总结如下:
N个朋友在玩游戏。他们每个人面前都有一个数字列表。
N 个朋友中的每一个从他的列表中选择一个数字并报告给游戏管理员。然后游戏管理员对上报的数字进行排序,喊出第K大的数字。
您想知道游戏管理员可以喊出的所有可能的数字。
在那一点上,我认为我已经理解了这个问题,但随后他们提出了以下示例:
在给出的示例示例中,对于第一个测试用例 N = 3 和 K = 3。第一个人的列表是 {2 5 3},第二个人是 {8 1 6},第三个人是 {7 4 9}。在这种情况下,{4, 5, 6, 7, 8, 9} 中的所有数字都有机会成为第三大选定数字。
所以我的问题是:
7、8和9怎么会是第三大选定的数字?
在我看来,只有数字 {1, 2, 3, 4, 5} 可以是第三大数字,但也许我误解了算法。