Column 1. Cracking the oyster
问题:
输入:7位电话号码的数据文件,纪录数量是百万级的;
输出:排序后的数据文件;
限制:内存只有2M,尽量快速;
分析:
后面有七位数字,它们的范围是[0, 9999999],,纪录个数是千万级,而1M内存能存储25000个整数。
该问题的本质是数学上的Dense-Set,可以用Bit Map(或者叫Bit Vector)解决,方法如下:
1)根据数据范围,建立一个BIT MAP,电话的范围是 1000000~9999999 ,那么建立含一千万个bit的数据结构bit _bit[10000000],初使化为全0。
2)对于数据文件里的每个 i, 将_bit[i]置为1
3)输出
看起来好像挺复杂,实际上想法很简单,举个例子就全都懂了:
{1,3,5,9}可以用向量表示为 0 1 0 1 0 1 0 0 0 1
这样,2M的存储空间大约可以用来表示2*8M=16M个数字。
Column 2.Aha! Algorithms
问题1:
输入:一个包含有40亿个int的数据文件
输出:它所遗漏的一个数字
限制:几K的内存
分析:
如果不限制内存,可以用位图法(需要2^32 bit = 512MB)。但内存限制在几K了怎么办?
答案是:二分查找法!!
取中位数0,统计大于0和小于0的数的数目,比较它们,在数目较小的范围内继续查找,直到找到遗漏的数。
扩展:
二分查找有很多直觉想不到的应用,如上述问题、程序调错等等,在实际中应注意它的应用。
问题2:
输入:一个串(如abcdefgh), 数i
输出:defghabc
限制:
分析:略
问题3.
输入:包含大量单词的文件
输出:所有同文词(包含字母和个数相同的词,如tab、bat和abt等)
分析:将单词按照字母大小重新排列,如tab重排得到abt,bat重排也是abt。具体方法略。
分享到:
相关推荐
"编程珠玑总结笔记" 本资源笔记总结了编程珠玑中的一些重要知识点,包括优化程序、埃氏筛法和位图法等。 1. 打印出小于 10000 的素数 优化程序是编程珠玑中的一大主题,如何优化程序来提高效率是一个非常重要的...
作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及...
《编程珠玑》是计算机科学领域的一本经典著作,作者是Jon Bentley。这本书以其深入浅出的讲解方式,探讨了程序设计中的一些核心问题,尤其是数据结构和算法的应用。第二版在第一版的基础上进行了更新和扩展,加入了...
优秀程序员都有点懒,他们等待灵机一动的出现,而不急于使用最开始的想法编程,真正的技能是对适当时候的把握,这只能来源于解决问题和反思问题答案所获得的经验。 标识算法 leetcode里有许多变位词的题,都是标识...
考研复试机试合集:哈工大苏小红C语言、学习指导(注:第二版与第三版内容差距不大)、王道机试指南、编程珠玑、算法笔记。 合集一为:哈工大苏小红C语言、学习指导(注:第二版与第三版内容差距不大)、王道机试...
《编程珠玑》(英文版) 读书笔记, 以ppt方式展现了这本书中的一些精华所在..
【计算机基础1】这个主题包含了四本非常重要的书籍,它们分别是《编程珠玑》、《编码:隐匿在计算机软硬件背后的语言》、《程序员思维修炼》和《改善既有代码的设计》。这些书籍覆盖了计算机科学的基础知识,编程...
产品经理刷leetcode Daily progress TO DO List 代码练习 算法图解 剑指offer ...Offer》《编程珠玑》 5.扩展阅读: 《算法之美》《算法帝国》 6.实践操作: 《算法竞赛入门经典》《力扣题库》 牛客
leetcode添加元素使和等于 ...思路:见编程珠玑2.3节 414. Third Maximum Number 描述:找出int[] A里第三大的元素,如不存在返回最大元素 思路:不用排序不用去重的解法,维护三个变量x1, x2, x3,遍
leetcode下载 说在前面 借鉴 联系方式 github : 邮箱 : HTML CSS · hot · hot JavaScript · hot ...工作笔记 ...《编程珠玑》 《硅谷之火》 《白帽子讲 Web 安全》 《程序员的英语》 《黑客与画家》
其次,我们要推荐的是《编程珠玑》。这本书深刻阐述了程序设计的核心概念和技巧,从基础知识到高级应用,覆盖了编程领域的各个方面。无论读者是初学者还是有一定经验的程序员,都能从中获取宝贵的知识和启示。 此外...
数据分析The Elements of Statistical LearningMathematical Methods for Physics and Engineering模式识别与机器学习(Pattern Recognition And Machine Learning)算法珠玑GolangGolang标准库文档GoWeb编程Go学习...
- **书籍**:《算法导论》、《编程珠玑》、《数据结构与算法分析》等。 - **在线课程**:Coursera、Udemy、edX上的相关课程。 - **社区和论坛**:StackOverflow、GeeksforGeeks、Reddit的r/...
4. **学习资料**:可能包括有关数据结构和算法的笔记、教程,甚至是一些经典的书籍推荐,如《算法导论》、《编程珠玑》等。 5. **练习平台接口**:如果仓库包含了API或者脚本,可能可以方便地与LeetCode、Hacker...