编程珠玑笔记1
来源:互联网 发布:iphone远程控制mac 编辑:程序博客网 时间:2024/05/18 14:15
一个文件里有1千万(10000000)个7位的整数(小于1千万),给大约1M内存让排序
位图(bitmap),长度10000000的bit数组a初始化为0,当数字x出现,a[x]=1,然后依次输出标志位为1的下标号。10000000bit == 1250000byte == 1220K == 1.19M。
如果严格1M做成双通道程序,第一次标记前500万输出,第二次标记后500万输出。
向量旋转:abcdefgh(长度n为8),向左旋转i=3次
3次反转法
i = i % n #n次还原reverse(0, i-1) #cbadefghreverse(i, n-1) #cbahgfedreverse(0, n-1) #defghabc
如果向右旋转:先取模,ii=i%n,向右旋转ii次,等于向左旋转n-ii次
某文件包含40亿个随机次序32位整数,其中有一个整数未出现,找出来。限制:内存几百字节,若干顺序文件。
- 先把最高位为1的写入文件a,最高位为0写入文件b,并分别计数countA,countB.如果最高位为1的整数全部出现,那么countA>countB && countA==2^31,则去文件b中查找,缺失的必定是最高位为0的。同理,区分第二最高位,第三最高位,直到找到
一个词典有230000个单词,file和life是变位词,找出所有变位词的词集
- 依次对每个单词进行签名,确保变位词拥有唯一的相同的签名,比如将单词字母排成升序,变位词排序后结果一致。然后按照签名排序,依次输出各个签名的变位词集
咖啡罐问题:一个成有一些黑色豆子和一些白色豆子的咖啡罐以及一大堆“额外”的黑色豆子,从罐子中随即选取两颗豆子,如果颜色相同,就将他们扔掉并却放入一个黑色的豆子;如果颜色不通,就将白色豆子放回罐子中,而将黑色的豆子扔掉。重复上述过程,直到罐子中只剩一颗豆子为止。证明该过程会终止,最后留下的豆子颜色跟初始状态时白豆和黑豆的数量有何关系?
- 证明如下:设B个黑豆,W个白豆,总数S=B+W,取2个豆子
if bb:#两黑豆 B=B-1; W=W; S=B-1+Welif ww: #两白色 B=B+1; W=W-2; S=B+1+W-2else: #bw异色 B=B-1; W=W;; S=B-1+w
每次豆子总数都会减少1,所以过程必定终止。
由于bw与bb相同,可以认为只有bb, ww两种情况。每次同色bb,ww,都会加入黑色,所以在白豆数量减少至1个或0个(0还是1取决于白豆奇数偶数)之前,黑豆不可能取完。所以我们简化为:直接先成对取白豆
当白豆W=2n(偶数)时,先取完所有白豆,剩下的就是黑豆B=B+n,其实此刻黑豆数量没关系,全是黑豆,白豆没有加入途径,最后一轮必定黑豆
当白豆W=2n+1(奇数)时,先成对取白豆至剩余1个白豆,黑豆B=B+n,在成对取出黑豆(记得回想上面的论证,可以认为只有bb,ww两类),最终必定剩余1黑1白(可以反证:剩余2黑1白,2黑成对取出,又加入1黑,得到1黑1白)。1黑1白,异色,白色回罐,黑色丢弃。最终是白色。
结论:白豆偶数,最后一个是黑豆;白豆奇数,最后一个是白
- 证明如下:设B个黑豆,W个白豆,总数S=B+W,取2个豆子
最大子向量:一个向量,每个元素有正有负,求最大子向量的和
x = (31, -41, 59, 26, -53, 58, 97, -93, -23, 84)max_so_far = 0 #全局当前最大和max_ending_here = 0 #从下标0直到当前下标i最大和for i in x: max_ending_here = max(max_ending_here+i, 0)#至少不为负 max_so_far = max(max_so_far, max_ending_here)
- 编程珠玑笔记1
- 编程珠玑-笔记1
- 编程珠玑学习笔记1
- 《编程珠玑》笔记
- 《编程珠玑》笔记
- 编程珠玑笔记
- 编程珠玑学习笔记
- 《编程珠玑》第一章笔记
- 读《编程珠玑》笔记
- 编程珠玑笔记--排序
- 编程珠玑笔记~~开篇
- 编程珠玑 笔记
- 编程珠玑笔记第一章
- 《编程珠玑》第一章笔记
- 编程珠玑学习笔记
- 《编程珠玑》笔记一
- 《编程珠玑》看书笔记
- 《编程珠玑》 心得笔记
- arm-linux-gnueabihf-gcc下载
- 归并排序
- CC学习笔记4:5FMT类:安全管理
- 037.Goto 代替 Continue 结束本次循环
- 一个密码复杂度的验证js
- 编程珠玑笔记1
- QT学习之路(一)————移植tslib库到开发板
- teradata collect statistics
- virtual box, ubuntu与windows共享文件夹
- 最短路——Floyd
- QT5入门之19 -QT调用外部程序
- 036.Goto 代替 Break 结束循环
- java中操作mysql操作
- Lua包管理工具Luarocks详解