算法学习十八----寻找发帖水王
来源:互联网 发布:mac word文件丢失 编辑:程序博客网 时间:2024/04/30 14:34
题目:经常在论坛或者讨论区上面会看到一些人每个帖子都回复或者发了很多帖子(但是没有对其他用户有用途的)。现在写一个算法,找出发帖数目超过帖子总数的一半的用户ID--称为发帖水王。(注:本题假设发帖水王存在)
算法思路如下:
先对序列排序之后,计算出每个ID的次数,输出出现次数最大的用户ID即可。但是这个方法效率比较低。另一种方法,就是想办法将大问题转换成小问题,对列表进行扫描,每次删除两个不相同的ID,这样剩下的数中“水王”依然是出现次数超过总数的一半,然后不断重复这个过程,这样就可以通过O(N)的时间复杂度得到结果。
算法伪代码:
int FindWaterKing(int *arr, int n)//for i <- 0 to n if nTimes == 0,means current number maybe the candidate then assign arr[i] to candidate and add nTimes else if candidate == arr[i] then ++nTimes else --nTimes
C++实现
int FindWaterKing(int *arr, int n){ int nTimes;//the number of current number int candidate;//result //for i <- 0 to n for(int i = 0, nTimes = 0; i != n; ++i) { //if nTimes == 0,means current number maybe the candidate if(nTimes == 0) { //then assign arr[i] to candidate and add nTimes candidate = arr[i]; ++nTimes; } else { //if candidate == arr[i] if(candidate == arr[i]) { //then ++nTimes ++nTimes; } else { //else --nTimes --nTimes; } } } return candidate;}
0 0
- 算法学习十八----寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- 寻找发帖水王
- [算法学习]发帖水王
- Python基础编程(九)魔法方法、属性和迭代器
- Ormlite开源数据库框架
- 12.3
- POJ 2329 (暴力+搜索bfs)
- textarea计算输入字符大小并限制输入
- 算法学习十八----寻找发帖水王
- leetcode Largest Rectangle in Histogram
- 3.1 创建线程执行器
- OpenCV_读取文件夹下的图片生成视频文件
- UML视图(五)活动图
- DELETE、TRUNCATE与高水位线(HWM)
- 《贺新郎.读史》 —— 毛泽东
- CommandName与CommandArgument
- POJ - 1475 Pushing Boxes