码迷,mamicode.com
首页 > 其他好文 > 详细

找“水王”

时间:2015-04-21 22:33:37      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

一、实验要求

三人行设计了一个灌水论坛。信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个水王,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子数目的一半。

如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗?要求时间复杂度为O[N]

二、设计思想

排序法:由于该“水王”发帖数目超过了帖子数目的一半,将列表中的ID从小到大进行排序,则中间的ID即为水王。但由于其时间复杂度不满足要求,因此需要采用更便捷的方法。

每次删除两个不同的数,因为“水王”发帖数过半,因此删除这俩数后“水王”发帖数依旧过半,若两ID相同则利用标志key++,key>0且两ID不同时key--。具体实现过程如下:

三、代码

 1 // KingofNavy.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include"iostream"
 6 using namespace std;
 7 
 8 int main()
 9 {
10     int key=0;
11     int king=0;
12     int i=0;
13     int array[]={5,5,3,5,3,3,3,5,3,3,4,3,2,3,5,3,7,3,3,2,3};
14     for(i=0;i<20;i++)
15     {
16         if(key==0)
17         {
18             king=array[i];
19             cout<<"Now the King of Navy is:"<<array[i]<<endl;
20             key=1;
21         }
22         else
23         {
24             if(king==array[i])
25             {
26                 key++;
27             }
28             else
29             {
30                 key--;
31             }
32         }
33     }
34     cout<<"The ID of King of Navy is:"<<king<<"!"<<endl;
35     cout<<"OVER..."<<endl;
36     return 0;
37 }
四、测试结果
技术分享
五、总结
遍历的方法很简单,但不总是符合要求,因此,多一些思考问题的方式总是好的。

 

找“水王”

标签:

原文地址:http://www.cnblogs.com/zglsh/p/4445547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!