上一页 1 ··· 4 5 6 7 8 9 10 下一页
摘要: 出题: 输入一个数字矩阵,要求从外向里顺时针打印每一个数字;分析:从外向里打印矩阵有多重方法实现,但最重要的是构建合适的状态机,这样才能控制多重不同的操作;注意有四种打印模式(左右,上下,右左,下上),所以需要一个index变量控制每次循环时执行的打印模式;注意水平打印和垂直打印分别需要两个变量控制... 阅读全文
posted @ 2014-05-23 10:35 Leo C. 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 出题:定义一个复杂链表:在单向链表的基础上,每个节点附加一个指向链表中其他任意节点的指针sibling,实现CNode* Clone(Cnode *head)函数复制这个复杂链表;分析:解法1:将head复制到CHead中,第一次遍历创建CHead中对应head的各个节点(next),第二次遍历创建... 阅读全文
posted @ 2014-05-23 10:29 Leo C. 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 出题:数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字;分析:解法1:首先对数组进行排序,时间复杂度为O(NlogN),由于有一个数字出现次数超过了数组的一半,所以如果二分数组的话,划分元素肯定就是这个数字;解法2:首先创建1/2数组大小的Hash Table(哈希表可以替代排序时间,... 阅读全文
posted @ 2014-05-22 10:12 Leo C. 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 出题:数值的整数次方(不考虑溢出),实现函数double Power(double base, int exponent);分析:解法1:最简单的方法是使用直接的乘法运算,但是注意处理几种特殊情况:exponent为负数,base为0;解法2:将exponent分解成2的不同次方相加的表达式,通过重... 阅读全文
posted @ 2014-05-22 09:45 Leo C. 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 出题:将一个数组最开始的k个(K小于数组大小N)元素照搬到数组末尾,我们称之为数组的旋转;现在有一个已经排序的数组的一个旋转,要求输出旋转数组中的最小元素,且时间复杂度小于O(N);分析:时间复杂度小于O(N)也就是不能用常规的遍历思路;可以将数组看成两个都是递增序列(假设为升序)的子数组,并且前半... 阅读全文
posted @ 2014-05-22 09:32 Leo C. 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 出题:要求用递归将一个栈结构的元素内外颠倒;分析:本题再次说明系统栈是程序员最好的帮手,但递归度较高所以时间复杂度较大,可以使用空间换时间的方法(额外数组保存栈元素,然后逆向压入);第一层递归(清空栈元素,并使用系统栈保存):[1,2,3,4,5],栈顶元素为1,将1弹出之后,递归处理[2,3,4,... 阅读全文
posted @ 2014-05-22 09:26 Leo C. 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 出题:将只包含2,3,5的因子的数称为丑数(Ugly Number),要求找到前面1500个丑数;分析:解法1:依次判断从1开始的每一个整数,2,3,5是因子则整数必须可以被他们其中的一个整除,如果不包含任何其他因子则最终的结果为1;解法2:小丑数必然是某个大丑数的因子,也就是乘以2,3,或者5之后... 阅读全文
posted @ 2014-05-22 09:19 Leo C. 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 出题:给定两个单向链表的头结点,判断其是否有公共节点并确定第一个公共节点的索引;分析:由于是单向链表,所以每个节点有且仅有一个后续节点,所以只可能是Y型交叉(每条链表中的某个节点同时指向一个公共节点,并共享后面的所有节点)。首先计 算每条链表的长度,m和n(m>n);然后设定两个指针A和B分别指向两... 阅读全文
posted @ 2014-05-21 09:43 Leo C. 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 出题:给定链表的头指针和一个节点指针,要求在O(1)的时间复杂度下删除该节点分析:如果需要删除的节点为A,其前序节点为A-,其后续节点为A+,所以删除A之后,需要使得A-的下一个节点就是A+,常规做法是设法得到A-的索引,需要 从链表头开始遍历所以时间复杂度为O(N),但实际情况是只要保证A-的下一... 阅读全文
posted @ 2014-05-21 09:27 Leo C. 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 出题:输入一个数组,要求通过交换操作将奇数索引的元素调整到数组前半部分,偶数索引的元素调整到数组后半部分;分析:当然如果没有额外要求的话很容易实现,最好使用In-Place的实现策略;考虑插入排序的策略,不过这里的判断条件是遇到第一个奇数的时候才停止。时间复杂度为O(N^2);另外可以使用快速排序策... 阅读全文
posted @ 2014-05-21 09:20 Leo C. 阅读(275) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 下一页