12 2014 档案

摘要:问题描述:找出链表中倒数第K个节点思路分析:用两个指针,一前一后,保持k个距离,前面的指针移动到末尾,后面的指针就刚好直到第k个节点,要考虑到k为0,倒数第k个节点不存在的情况。参考代码:ListNode* FindKthToTail(ListNode * pHead,unsigned int k)... 阅读全文
posted @ 2014-12-23 11:05 阿木木在发呆 阅读(158) 评论(0) 推荐(0)
摘要:申明:这本书之前看过,自己没总结,以下故事是豆瓣 南桥 兄的书评,等我看了第二遍在评价一下 •有一段时间,为抑制企业给CEO乱涨工资行为,美国媒体开始给CEO公开工资,并排名。结果,CEO工资涨得更是无法收拾了,因为富人这时候眼睛看着超级富人了; •你对自己的工资是否满意,要看你老婆的妹夫赚... 阅读全文
posted @ 2014-12-22 21:40 阿木木在发呆 阅读(1647) 评论(0) 推荐(0)
摘要:问题描述: 输入一个整数数组,实现一个函数来调整该数组中的数字顺序, 是的所有奇数位于数组的前半部分,所有偶数位于后半部分。 思路分析: 使用两个指针,一个指向数组头,一个指向数组尾,相向运动,一个在前面找偶数, 一个在后面找奇数,找到后互换,两个指针相遇则结束。 参考代码: void RecordOddEven(int *pData,int nLength){ if ((pData... 阅读全文
posted @ 2014-12-21 22:05 阿木木在发呆 阅读(135) 评论(0) 推荐(0)
摘要:问题描述:给定单相链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。 这个比较简单,做不做解释,直接看参考代码,不过有一点就是要注意,还是要看删除的节点类型,不能保证总是O(1)时间 参考代码: void DeleteNode(ListNode** pHead,ListNode *pTobeDelete){ if ((pHead == NULL) || (*pHead =... 阅读全文
posted @ 2014-12-21 19:48 阿木木在发呆 阅读(114) 评论(0) 推荐(0)
摘要:问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3打印出1-999. 思路分析: 最简单的想法莫过于先算出这个最大的数,然后循环打出,但是没有考虑大溢出和大数问题。 下面有两种思路,一个是用数组模拟字符串,一种是用排列组合的方法。 参考代码: 思路一:字符串上模拟数字加法 bool Increment(char *number)//实现在数字字符串上+1{ bo... 阅读全文
posted @ 2014-12-14 10:22 阿木木在发呆 阅读(229) 评论(0) 推荐(0)
摘要:问题描述:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需考虑大数问题。思路分析:要是你秒秒钟想到一个循环搞定估计面试没戏了。要考虑指数为0和负数的情况,如果底数也为0了?为负数时就是相当于要求正数时的倒... 阅读全文
posted @ 2014-12-13 21:11 阿木木在发呆 阅读(293) 评论(0) 推荐(0)
摘要:1.概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用模式:同步:所谓同步,就是在发出一个功能调用时,在没有得到结果前,该调用就不返回。也就是必须一件一件做事,等前一件做完了才能做另一件。例如在C/S模式的某个流程中,你... 阅读全文
posted @ 2014-12-13 13:14 阿木木在发呆 阅读(7816) 评论(2) 推荐(1)
摘要:一、TCP编程的一般步骤 服务器端: 1、创建一个socket,用函数socket() 2、绑定IP地址、端口等信息到socket上,用函数bind() 3、开启监听,用函数listen() 4、接收客户端上来的连接,用函数accept() 5、收发数据,用函数send()和recv(),或者read()和write() 6、关闭网络连接 7、关闭监听 客户端: 1、创建一个socket,用函数s... 阅读全文
posted @ 2014-12-04 23:17 阿木木在发呆 阅读(1335) 评论(0) 推荐(0)
摘要:问题描述: 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。 思路分析: 简单的立马想到将次数右移,只要与1相与的话就能算出个数了,但是位移负数时左边为了保持符号位会 补一,例如将1101右移以为会变成1110.这样就会造成死循环。 下面有两种可行的方法: 1、我们可以不右移输入的数组n,首先把n和1做与运算,判断最低位是不是1,接着把1左移一位得到2再和 n做与运算,... 阅读全文
posted @ 2014-12-03 17:53 阿木木在发呆 阅读(151) 评论(0) 推荐(0)
摘要:一、一个C++编译的程序占用的内存分为以下几个部分1、栈区:由编译器自动分配 存放函数的参数值,局部变量的值等,操作方式类似于数据结构中的栈。2、堆区:一般由程序员分配释放,若程序员不释放,程序结束时 可能 有系统收回。它与数据结构中的堆是两回事。分配方式类似于链表。3、全局区(静态区):全局变量和... 阅读全文
posted @ 2014-12-02 23:13 阿木木在发呆 阅读(3478) 评论(1) 推荐(0)
摘要:一、指向普通函数的指针 要符合两点要求: 1返回类型相同 2参数类型、个数、顺序相同 实例: int Max(int a,int b){ return a>b?a:b; } int (*pFun)(int a,int b); int _tmain(int argc, _TCHAR* argv[]){ pFun = Max; coutb?a:b; }}; int (A::... 阅读全文
posted @ 2014-12-02 20:35 阿木木在发呆 阅读(182) 评论(0) 推荐(0)
摘要:1.通过数组和下标实现的表达式可以等价的通过指针和偏移量实现。 例如: int a[]= {1,4,66,8}; *p = a; p = &a[0];//和上面一句等价 *(p+1) 和a[1]和*(a+1)是等价的 a+1和&啊&a[1]也是等价的。 2.数组作为函数参数在传参时会自动退化为普通指针 int Srlen(char string[]); 在此函数中若调用系统的字符串长度函数s... 阅读全文
posted @ 2014-12-02 19:18 阿木木在发呆 阅读(179) 评论(0) 推荐(0)
摘要:问题描述: 一只青蛙一次可以跳上一个台阶或者两个。求该青蛙跳上一个N级台阶有多少种方法。 思路解析: 如果只跳一级台阶青蛙只有一种跳法,两级就有两种。我们把n级台阶的跳法看成n的函数 记为f(n)。当n大于二时,第一次跳时有两种不同的选择:一是一次只跳一级,此时跳法数 目等于后面n-1级台阶的跳法数目,即为f(n-1);另外一种就是选择第一次跳2级,此时跳法 数目就等于后面剩下的n-2级台阶的... 阅读全文
posted @ 2014-12-02 11:33 阿木木在发呆 阅读(185) 评论(0) 推荐(0)
摘要:问题描述: 把一个数组最开始的若干元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的旋转 输出旋转数组的最小元素。例如{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为一。 思路解析: 最简单的莫过于从头到尾遍历一遍找出最小元素,这种方法时间复杂度为O(n),但是没有使用旋转数组的 特性,肯定不符合面试官的要求。在排序数组中我们利用二分查找发实现O(lo... 阅读全文
posted @ 2014-12-01 13:02 阿木木在发呆 阅读(163) 评论(0) 推荐(0)