2013-07-29 62 views
4

今天我試圖解決一個Facebook Programming Challenge。我得到的挑戰是'酒吧問題',可以找到here。在挑戰過程中,我的問題是理解他們提供的第一個例子。給出N個給定集合中每個給出第K個最大數字的例子嗎?

ň朋友在玩一個遊戲:

問題可以總結如下。他們每個人都有自己前面的數字列表。

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}可以是第三大數字,但也許我誤解了算法。

+4

他們當然不能。目前還不清楚問題作者究竟意味着什麼。 –

+0

如果任何人有興趣,他們從來沒有迴應我的反饋,我向他們報告了問題。如果其他參加過測試的人能夠確定問題是否已經修改,那將會很好。 – snrlx

+2

我最近接受了它。它仍然是一樣的,因爲你不瞭解作者的意圖。由3位參賽者(N = 3)組成的第3位數(K = 3),第3位數表示所有提交數**的最大數,**滿足測試案例。也許你正在考慮從最大的三分之一*這句話顯然不是最好的。 – sjagr

回答

5

我認爲你是對的,他們以錯誤的方式排序數字。如果您希望獲得第三小,而不是第三大,則提議的示例回覆看起來像是正確的回覆。也就是說,從最小到最大排序他們,你會得到第三個。這不是問題中提到的(但英語不是我的第一語言,所以我可能會弄錯)。

0

該問題必須意味着第三小。

給定一組數組S_1,S_2 ... S_N,選擇一個,然後選擇一個給定的元素。假定我們知道每組中的最大和最小元素,並將這些組分成三組。所有元素都大於e的元素,所有元素都小於e的元素,以及元素都大於和小於e的元素。

對於一組N個集合,且k最小,所有元素都小於e且不大於k-1個集合,且所有元素都大於e且不大於N-k集合。如果這兩個條件成立,我可以把那些大於和小於e的組合放在一起,並按照選擇e的方式進行排列。

相關問題