编程珠玑学习笔记二 第一章总结
第一章比较好的问题总结如下:
1.如何生成位于0到n-1之间的k个不同的随机顺序的随机整数?
这在前一篇文章中已经给出了解答
2.若代码需要1.25MB的空间,而系统只能提供1MB的空间,该如何处理?
思路:此时可分别两次读入数据来处理。
3.每个整数不只出现一次,而是最多出现10次,如何处理?
思路:前面的问题每个数字只出现一次,所以选择用一个bit位来表示这个数字是否出现;
而现在最多出现10次,就不能用一位来表示了,至少需要4bit来表示这个数字出现了
多少次。所以位图的长度也就扩大了四倍。此时若对内存大小有严格限制,则可以
多次读入数据来解决问题
4.免费电话区号不只是800,还包括877,888.如何在1MB空间内完成对所有这些免费电话号码
的排序?
书上说用关键字做索引,暂时没有什么思路。。。
5.以更多的空间来换取更少的运行时间。
网上搜了一下答案,可参考:
http://blog.csdn.net/cattylll/article/details/7056898
6.如何组织商店的数据库,以允许高效的插入和检索操作
思路:用电话号码的最后两位来做hash将订单分类,用顺序遍历的方式来检测冲突。
注:由于电话号码前几位一般相似度很高,故不必将其列入索引值