某个公司举行一场羽毛球赛,有1001个人参加,现在为了评比出“最厉害的那个人”,进行淘汰赛,请问至少需要进行多少次比赛。
换个角度看,要淘汰一人必须打一场比赛,因此要淘汰1000人就要1000场比赛
有100个灯泡,第一轮把所有灯泡都开启,第二轮把奇数位的灯泡灭掉,第三轮每隔两个灯泡,灭一个,开一个,依此类推。求100轮后还亮的灯泡。
从1开始到100看自己包含多少个约数(包括1和自己),如果有奇数个约数那么灯泡是亮的,偶数个约数那么灯泡是暗的,而n=p*q,只有在p=q的时候约数的个数是奇数,也就是说,该数字就完全平方数
有20个数组,每个数组里面有500个数组,降序排列,每个数字是32位的unit,求出这10000个数字中最大的500个。
常用的量:10^6或者100w就是1M。10^9就是1亿,也就是1G
因此这么多数字1M都没有,直接输入内存,5路归并;或者看成一个大数组,TOP500,快速选择算法。
关于内存的延迟分配
Linux内核定义了“零页面”(内容全为0的一个物理页,且物理地址固定),应用层的内存分配请求,如栈扩展、堆分配、静态分配等,分配线性地址后,就将页表项条目指向“零页面”(指定初始值的情况除外),这样“零页面”就被所有进程共享,当向页面执行写入操作时,内核就会新分配一个物理页,实行“写时拷贝”操作,这样就实现了物理页面的延迟分配(如果只有读没有写,则无需另分配物理页)。
http://www.cnblogs.com/raymondshiquan/archive/2011/06/05/2073103.html
给定一数组,输出满足2a=b(a,b代表数组中的数)的数对,要求时间复杂度尽量低
sb了,还想遍历分别比较的。。找相等的东西就是hash直接索引得到。。。第一个数组hash,O(n)...乘以2再hash一遍把存在的元素就取出来,最终O(n)的复杂度
这个还可以排序,然后对于2a二分查找。空间为O(1),但时间变成了排序O(nlgn)+所有元素二分查找O(nlgn)