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

2021-06-15 08:12:28 字數 646 閱讀 8750

描述

直接拍照,懶得打字

此題很容易轉換為,在乙個陣列中,有乙個數出現的次數超過了陣列元素個數的一半,請找出這個元素。

方法一:

對陣列排序進行排序,利用通常的排序方法,複雜度o(nlgn),再遍歷一遍陣列,找出那個元素,複雜度為o(n),空間複雜度o(1);

方法二:

空間換時間吧,在開闢乙個陣列,hash對映到新的陣列,然後掃瞄一遍新陣列,複雜度o(n+n);空間複雜度o(k),k是id的最大值;

方法三:

還是先排序,然後找出中間那個元素,就是要查詢的元素。

證明一下:假設陣列a[1,2,...,j]已經排好序,我們假設中間的元素a[j/2]不是那個要找的資料,設要查詢的那個資料為a,因為a!a[j/2],所以a 要麼排在j/2的前面,要麼在j/2的後面,設a出現的次數為k,k>j/2(超過一半);簡單的分析可知:無論a排在後面還是前面都有:k這樣排好序後直接定位j/2的那個資料就ok了。

方法四:

直接上書上的**吧

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

基礎問題 找出發帖數超過帖子總數一半的id.拓展問題 有三人發帖數都超過了帖子總數目n 的1 4 找出他們的 id.我們可以先排序然後找出中間的那個id 但可以考慮避免排序來改進時間複雜度。每次從列表刪除兩個不相同的id 剩餘的相同 id就是找到的 水王 type find type id,int ...

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

程式設計之美 尋找發帖水王.cpp 定義控制台應用程式的入口點。有乙個水王發帖超過一半 給你發帖所有的id 找到他 統計每個id出現次數 找到最大的 超過一半 include stdafx.h include include include using namespace std class id ...

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

tango是微軟亞洲研究院的乙個試驗專案。研究院的員工和實習生們都很喜歡在 tango 上面交流灌水。傳說,tango 有一大水王,他不但喜歡發帖,還會回覆其他 idid 也在表中,你能快速找出這個傳說中的 tango 水王嗎?分析 如果乙個id 出現的次數超過總數 n的一半,那麼先把這些 id排好...