尋找發帖水王

2022-05-03 03:09:09 字數 591 閱讀 9001

問題描述:我這裡有很多學生的學號(有重複的),已知其中有k個學生,他們的學號出現的次數都超過了總數的1/(k+1),請把這k個學號找出來。

上**:

#include#include#includeusing namespace std;

templateinline size_t getarrlen(t (&arr)[n])

const int k=3;

int main();

int len=getarrlen(ids);

list> words;

for(int i=0;i>::iterator pos=words.begin();

while(pos!=words.end())

if(pos!=words.end())else

else

itr=words.begin();

while(itr!=words.end())else}}

} }list>::iterator itr=words.begin();

while(itr!=words.end())

cout

}

尋找發帖「水王」

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

尋找發帖水王

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

尋找發帖「水王」

題目 解法1 對所有id排序,因為該id出現的次數超過總數的一半,對有序的序列,第n 2項即為所求id。解法2 每次刪除兩個不同的id,那麼剩下的id列表中,水王 的id次數仍然超過總數的一半。可以通過不斷重複這個過程,把id列表中的id總數降低,從而得到答案。總的時間複雜度只有o n 且只需要常熟...