電話聊天狂人

2021-10-01 02:24:36 字數 997 閱讀 6053

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。

輸入首先給出正整數n(≤10​5​​),為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。

在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人不唯一,則輸出狂人中最小的號碼及其通話次數,並且附加給出並列狂人的人數。

4

13005711862 13588625832

13505711862 13088625832

13588625832 18087925832

15005713862 13588625832

13588625832 3
題目詳解:因為只要簡單的把兩個人通話的記錄記下來,然後排序選出通話次數最多的那些人;

(1)顯而易見要麼開個通話陣列記錄次數,但是**號太長,根本開不了這麼長的陣列,那就會想到了將**號離散化處理再開個陣列記錄。

(2)開個結構體陣列記錄**號和次數,但是面臨的乙個問題便是查詢**號時時間複雜度高,超時。。。。。

(3)使用對映關係,從字串對映到數字,用到std庫中的map資料結構,其內部實現就是平衡二叉樹,排序問題是自動有序並且時間複雜度nlog(n),最後直接就可以查詢首部元素,以及記錄最大值的數量問題就迎刃而解了。

#include#include#includeusing namespace std;

int main()

int count=0;

int flag=0;

for(it=c.begin(); it!=c.end(); ++it) else if(flag==it->second)

count++;//最大通話使用者人數

} cout

cout<<" "

}

電話聊天狂人

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如...

電話聊天狂人

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如果這樣的人...

電話聊天狂人

給定大量手機使用者聯絡歷史,找出其中通話次數最多的聊天狂人。輸入格式 輸入首先給出正整數n 10 5 為聯絡歷史條數。隨後n行,每行給出一條聯絡歷史。簡單起見,這裡只列出撥出方和接收方的11位數字構成的手機號碼,其中以空格分隔。輸出格式 在一行中給出聊天狂人的手機號碼及其通話次數,其間以空格分隔。如...