上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 98 下一页
摘要: 18.6 设计一个算法,给定10亿个数字,找出最小的100万个数字。假定计算机内存足以容纳全部10亿个数字。解法:方法1:排序按升序排序所有的元素,然后取出前100万个数,时间复杂度为O(nlog(n))方法2:大顶堆我们可以使用大顶堆来解题。首先,为前100万个数字创建一个大顶堆然后,遍历整个数列... 阅读全文
posted @ 2015-03-24 12:22 Jessica程序猿 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 18.5 有个内含单词的超大文本文件,给定任意两个单词,找出在这个文件中这两个单词的最短距离(也即相隔几个单词)。有办法在O(1)时间里完成搜索操作吗?解法的空间复杂度如何?解法1:我们假设单词word1和word2谁在前谁在后无关紧要。要解决此题,我们需要遍历一次这个文件。在遍历期间,我们会记下最... 阅读全文
posted @ 2015-03-24 11:46 Jessica程序猿 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 18.2 编写一个方法,洗一副牌。要求做到完美洗牌,换言之,这幅牌52!种排列组合出现的概率相同。假设给定一个完美的随机发生器。解法:假定有个数组,含有n个元素,类似如下:[1][2][3][4][5]利用简单构造法,我们不妨先问自己,假定有个方法shuffle(...)对n-1个元素有效,我们可以... 阅读全文
posted @ 2015-03-24 09:25 Jessica程序猿 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 18.1 编写一个函数,将两个数字相加,不得使用+或其他算术运算符。int add(int a,int b){ if(b==0) return a; int sum=a^b; int carry=a&b)<<1; return add(sum,carry);} 阅读全文
posted @ 2015-03-24 09:13 Jessica程序猿 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 1 TCP拥塞窗口的作用?慢启动为发送方的TCP增加了另一个窗口:拥塞窗口(congestion window),记为cwnd。当与另一个网络的主机建立TCP连接时,拥塞窗口被初始化为1个报文段(即另一端通告的报文段大小)。每收到一个ACK, 拥塞窗口就增加一个报文段(cwnd以字节为单位,但是慢启... 阅读全文
posted @ 2015-03-23 19:50 Jessica程序猿 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。... 阅读全文
posted @ 2015-03-23 17:23 Jessica程序猿 阅读(531) 评论(0) 推荐(0) 编辑
摘要: Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。Linux内核地址映射模型x86 CPU采用了段页式地址映射模型。进程代码中的地址... 阅读全文
posted @ 2015-03-23 16:43 Jessica程序猿 阅读(38883) 评论(4) 推荐(6) 编辑
摘要: 转载:http://www.kerneltravel.net/journal/v/mem.htmLinux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存... 阅读全文
posted @ 2015-03-23 16:39 Jessica程序猿 阅读(1627) 评论(0) 推荐(1) 编辑
摘要: 解决方案需要熟练掌握一些常见的位操作实现,具体为:1)常用的等式:-n=~(n-1)=~n+12)获取整数n的二进制中最后一个1:n&(-n)或者n&~(n-1)如:n=010100,则-n=101100,n&(-n)=0001003)去掉整数n的二进制中最后一个1:n&(n-1),如:n=0101... 阅读全文
posted @ 2015-03-23 11:43 Jessica程序猿 阅读(1167) 评论(0) 推荐(0) 编辑
摘要: 输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。bool IsPossiblePopOrder(... 阅读全文
posted @ 2015-03-21 19:33 Jessica程序猿 阅读(280) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 98 下一页