程式設計之美 發帖水王

2021-06-21 03:56:43 字數 345 閱讀 9741

問題是,在論壇上乙個人非常喜歡發帖,且他發的帖子數目超過了帖子總數的一半,要想快速的找出這個id,怎麼辦?

首先可以先把所有帖子按id進行排序,把排序結果存進陣列裡面,然後直接索引n/2即可得到那個id。時間複雜度是n*logn.

還可以從另外乙個角度來看這個題,因為他的帖子數目超過了總數的一半,因此,每次刪除兩個不同的id,最後剩下的一定是那個人的id。

這裡主要學習下書上的**,寫得 很簡潔

type find(type *id,int n)

{ type candidate;//候選id

int ntimes,i;

for(i=ntimes=0;i

程式設計之美 發帖水王

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

程式設計之美發帖水王拓展問題

程式設計之美中的 尋找發帖水王 描述的是這麼乙個問題,有乙個id列表,其中有乙個id 水王的id 出現的次數超過了一半,請找出這個id。書中的思路是每次從列表中刪除兩個不同的id,不影響 水王的id在剩餘id中仍然超過一半 這一事實,因此每次刪除兩個不同的id,直到剩下的所有id都相同,那麼剩下的就...

程式設計之美 尋找發帖「水王」

描述 直接拍照,懶得打字 此題很容易轉換為,在乙個陣列中,有乙個數出現的次數超過了陣列元素個數的一半,請找出這個元素。方法一 對陣列排序進行排序,利用通常的排序方法,複雜度o nlgn 再遍歷一遍陣列,找出那個元素,複雜度為o n 空間複雜度o 1 方法二 空間換時間吧,在開闢乙個陣列,hash對映...