水骑士设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。
如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?
思路,这道题目,最终我还是用最常规的方法,构建Hash表来实现,时间复杂度为:O(n*logn),相对来说慢一点。
1 #include<iostream> 2 #include<map> 3 #include<string> 4 using namespace std; 5 int main(){ 6 int n; 7 map<string,int> hash;//帖子id与数目的映射关系 8 cin>>n; //帖子的总数量 9 string id,ans="不存在水王"; 10 for(int i=0;i<n;i++){ 11 cin>>id; 12 if(hash.count(id)==0){ 13 hash[id]=1; 14 }else { 15 hash[id]++; 16 } 17 if(hash[id]>=n/2){ 18 ans=id; 19 } 20 } 21 cout<<"水王是:"<<ans<<endl; 22 return 0; 23 }