摘要: 题目:设X和Y都是n位的十进制整数,计算它们的乘积XY。 分析: 我们可以用小学所学的方法来设计一个计算乘积XY的算法,但是这样做计算步骤太多,显得效率较低。如果将每2个1位数的乘法或加法看作一步运算,那么这种方法要作O(n2)步运算才能求出乘积XY。下面我们用分治法来设计一个更有效的大整数乘积算法。将n位的二进制整数X和Y各分为2段,每段的长为n/2位(为简单起见,假设n是2的幂),如... 阅读全文
posted @ 2012-03-21 21:37 Better-zyy 阅读(678) 评论(0) 推荐(0) 编辑
摘要: 一.linux内核网络栈代码的准备知识1. linux内核ipv4网络部分分层结构:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件主要有:/net/socket.c /net/protocols.c etc INET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,还需要保留些额外的参数,于是就有了struct sock结构。文件主要有:/net/ipv4/protocol.c /net/ipv4/af_inet 阅读全文
posted @ 2012-03-16 19:31 Better-zyy 阅读(18579) 评论(0) 推荐(5) 编辑
摘要: 题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。 分析: 1.通过减小问题的规模来求解 可将数组分成左右两个部分分别求解,这样可就出现三种情况: a. 差的最大值在左边的数组里 b. 差的最大值在右边的数组里 c.... 阅读全文
posted @ 2012-03-16 15:07 Better-zyy 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 题目:如何对n个不重复出现的整数序列进行排序,已知这些数的范围为(0-65535),要求时间复杂度O(n),空间复杂度O(1) 分析: 可以申请一个大小为65536的数组A,数组的x下标代表数字x,A[x]代表x 在整数序列中出现的次数。扫描一遍整数序列就可以完成对该整数序列的排序,时间复杂度为O(n) 应为已知范围,申请大小为65536的数组,大小为常量,所以空间复杂度为O(1) 代码:... 阅读全文
posted @ 2012-03-15 19:53 Better-zyy 阅读(6951) 评论(2) 推荐(0) 编辑
摘要: 题目: 把一个单链表倒序输出代码: 1: struct ListNode 2: { 3: ListNode *pnext ; 4: int value ; 5: ListNode(): 6: pnext(NULL),value(0){} 7: }; 8: void reverseList(ListNode* pNode) 9: { 10: if (!pNode){ 11: return ; 12: } 13: if(pNode){ 14: reverseList(pNode->pn... 阅读全文
posted @ 2012-03-15 19:00 Better-zyy 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 题目:两个单向链表,找出它们的第一个公共结点 分析:该分析转载至http://zhedahht.blog.163.com/blog/static/254111742008053169567/ 如果两个单向链表有公共的结点,也就是说两个链表从某一结点开始,它们的m_pNext都指向同一个结点。但由于是单向链表的结点,每个结点只有一个m_pNext,因此从第一个公共结点开始,之后它们所有结点... 阅读全文
posted @ 2012-03-15 18:48 Better-zyy 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 分析: 该分析过程转载至 (http://zhedahht.blog.163.com/blog/static/2541117420071128950682/) 首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出... 阅读全文
posted @ 2012-03-15 15:13 Better-zyy 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 在很多的应用程序中会打印日志,用以记录相应的操作。当随着时间的增加,日志文件的大小也会慢慢的变大。使得我们不得不去处理这些日志:备份、删除等… 在linux系统中有一个叫logrotate的工具,可以专门用来管理日志文件:定期的进行备份(也叫转储),删除日志文件。logrotate实现的原理是非常简单的,详情可以”百度”。 下面说一下我个人中常用的logrotate的配置选项:... 阅读全文
posted @ 2012-03-15 12:13 Better-zyy 阅读(623) 评论(0) 推荐(0) 编辑
摘要: 1: #insert sort 2: def InsertSort(a): 3: for i in range(1,len(a)): 4: tmp = a[i] 5: k = i 6: j=i-1 7: while j >= 0 and a[j] > tmp : 8: a[j+1] =... 阅读全文
posted @ 2012-03-06 20:10 Better-zyy 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 1: void* 2: memcpy ( void* dst, void* src, size_t len ) 3: { 4: size_t i = 0 ; 5: if((long)dst % sizeof(long) == 0 && 6: (long)src % sizeof(long) == 0 && 7: len % sizeof(long) == 0 ){ 8: long *d = dst ; 9: const long *s = src ; 10: ... 阅读全文
posted @ 2012-03-03 22:31 Better-zyy 阅读(235) 评论(0) 推荐(0) 编辑