BOP 尋找發貼 水王

2021-06-03 19:58:13 字數 743 閱讀 8286

尋找發貼『水王』中擴充套件題為:

隨著tango的發展,管理員發現,「超級水王」沒有了。統計結果表明,有3個發帖很多的id,他們的發帖數目都超過了帖子總數目n的1/4。你能從發帖id列表中快速找出他們的id嗎?

解答:這道題顯然還是用原題中的思路去解決,但問題複雜了,由原來的乙個水王,變成了3個:

首先,我們需要3個變數來記錄當前遍歷過的3個不同的id,number1,number2,number3,這3個元素分別對應當前遍歷過的3個id出現的個數。如果遍歷中有某個id不同於這3個當前id,我們就判斷當前3個id是否有某個的number為0,如果有,那這個新遍歷的id就取而代之,並設定對應的number為1;如果當前3個id的number皆不為0,則3個id的number都減去1。

void find_top3_water_king(int arr, int arrsize)

else if (number2 == 0 && arr[index] != waterk3 )

else if (number1 == 0 && arr[index] != waterk3 && arr[index] != waterk2 )

else

}

}cout << "the big 3 water king is " << waterk1 << "," << waterk2 << "," << waterk3 << endl;

}

答案 尋找發貼「水王」

首先想到的是乙個最直接的方法,我們可以對所有 id進行排序。然後再掃瞄一遍排好序的 id列表,統計各個 id出現的次數。如果某個 id出現的次數超過總數的一半,那麼就輸出這個 id。這個演算法的時間複雜度為o n log2 n n 如果id 列表已經是有序的,還需要掃瞄一遍整個列表來統計各個 id出...

微軟《程式設計之美》 尋找發貼「水王」 及 其擴充套件問題

原始問題 一種較好的思路 如果每次刪除兩個不同的id 不管是否包含 水王 的id 那麼,在剩下的id列表中,水王 id出現的次數仍然超過總數的一半。看到這一點之後,就可以通過不斷重複這個過程,把id列表中的id總數降低 化為更小的問題 從而得到問題的答案,總的時間複雜度只有o n 且只需要常數的額外...

尋找小水王

一 題目 三人行設計了乙個灌水論壇。資訊學院的學生都喜歡在上面交流灌水,傳說在論壇上有乙個 水王 他不但喜歡發帖,還會回覆其他id發的每個帖子。坊間風聞該 水王 發帖數 發現水王沒有了,但是統計結果表明,有三個發帖很多的id。據統計他們的發帖數量超過了1 4,你能從發帖列表中快速的找到他們嗎?二 i...