编程之美-2.3-寻找发帖“水王”
来源:互联网 发布:谷歌访问助手 mac 编辑:程序博客网 时间:2024/05/17 04:12
1. 简述
原题:简略的说,就是一个ID列表,其中每个ID都可能重复出现,其中一个ID的重复出现个数超过了列表长度的一半。要求快速找到这个ID。
扩展:ID列表中,有三个ID,这三个ID重复出现的次数,都超过了列表长度的1/4。要求快速找到这个ID。
2. 思路
原题的思路还是编程之美上面的方法,扩展题目的方法是参考中的一篇文章中讲过。
原题的思路是保存一个ID和该ID的计数,然后遍历ID列表,如果当前没有保存的ID(即ID对应次数为0),那么保存遇到的ID,并且计数设置为1;如果遇到的ID刚好是保存的ID,那么计数加1;如果遇到的ID是一个新的ID,那么ID的计数减1。这样遍历之后,保存的ID必然就是所求ID。因为所求的ID占ID列表长度一半以上,并且只有不同的两个ID才会消减,所以,无论消减顺序如何,最后超过一半以上的ID一定是不会被消减掉的,也是唯一一个不会被消减掉的。
扩展题目的思路是,保存三个ID和对应三个计数,然后遍历ID列表,如果当前有没有保存的ID(即有ID对应次数为0),那么保存这个ID,并且将对应的计数设置为1;如果遇到的ID是一个已经保存的ID,那么将对应ID的计数加1;如果遇到的ID是一个新的ID,而且此时已经保存了三个ID了,那么这三个ID的计数分别减1。由于N次遍历,最多消减N/4个ID,而要求的三个ID次数都大于N/4,因此这三个ID肯定不会被消掉,而最后只保存了三个ID,要求的三个ID又不会被消掉,那么必然说明保存的三个ID就是要求的这三个ID。
基本上很容易扩展到K个ID,其中每个ID出现的次数都超过N/(K+1)次的情况,其中,N为ID列表长度。
3. 代码
这个略了吧。
4. 参考
编程之美-2.3-寻找发帖“水王”
- 编程之美2.3 寻找发帖“水王”
- 编程之美-2.3-寻找发帖“水王”
- 编程之美-2.3-寻找发帖“水王”
- 编程之美 2.3 寻找发帖“水王”
- 编程之美2.3 寻找发帖“水王”
- 编程之美2.3 寻找发帖"水王"
- 编程之美 2.3 寻找发帖“水王”
- 编程之美2.3寻找发帖"水王"
- 编程之美2.3 寻找发帖“水王”
- 编程之美-寻找发帖"水王"
- 寻找发帖“水王”--《编程之美》笔记
- 寻找发帖“水王”--《编程之美》笔记
- 编程之美 寻找发帖“水王”
- 编程之美-寻找发帖“水王”
- 编程之美---寻找发帖“水王”
- 读书笔记之编程之美 - 2.3 寻找发帖“水王”
- 《编程之美》之读书笔记 2.3寻找发帖“水王”
- 编程之美--2.3寻找发帖“水王”之扩展问题
- phonics-2
- 关于浮点数的比较
- OO原则
- linux时间是如何自动同步的
- PHP抓取视频缩略图类VedioUrlParser(支持优酷、土豆、酷六、56、乐视、搜狐)
- 编程之美-2.3-寻找发帖“水王”
- 调整单元格宽度无法生效的问题
- orcale 触发器
- Linux系统调用的实现机制分析
- 黑马程序员-java基础 io字节流
- [转]shell字符串截取
- js正则表达式的写法
- Microsoft Target Designer 设计目标系统
- (c语言课程设计)学生成绩管理系统