出题:定义一个复杂链表:在单向链表的基础上,每个节点附加一个指向链表中其他任意节点的指针sibling,实现CNode* Clone(Cnode
*head)函数复制这个复杂链表;分析:解法1:将head复制到CHead中,第一次遍历创建CHead中对应head的各个节点(next),第二次遍历创建...
分类:
其他好文 时间:
2014-05-26 10:57:19
阅读次数:
333
出题:
输入一个数字矩阵,要求从外向里顺时针打印每一个数字;分析:从外向里打印矩阵有多重方法实现,但最重要的是构建合适的状态机,这样才能控制多重不同的操作;注意有四种打印模式(左右,上下,右左,下上),所以需要一个index变量控制每次循环时执行的打印模式;注意水平打印和垂直打印分别需要两个变量控制...
分类:
其他好文 时间:
2014-05-26 10:55:14
阅读次数:
318
出题:判断一个单向链表是否有环,如果有环则找到环入口节点;分析:第一个问题:使用快慢指针(fast指针一次走两步,slow指针一次走一步,并判断是否到达NULL,如果fast==slow成立,则说明链表有环);第二个问题:fast与slow相遇时,slow一定还没有走完一圈(反证法可证明);示意图A...
分类:
其他好文 时间:
2014-05-26 10:22:27
阅读次数:
279
出题:给定一个乱序链表,节点值为ASCII字符,但是其中有重复项,要求去除重复项并保证不改变剩余项的原有顺序;分析:创建一个256(2^8)大小的bool数组,初始化为false,顺序读取链表,将字母对应位置为false的重新标记为true并保留节点,将字母对
应位置为true的保持并删除节点;时间...
分类:
其他好文 时间:
2014-05-26 10:19:49
阅读次数:
209
近来参加了几场PHP工程师的面试,但是笔试题答得都不理想,回来总结了一下失败的原因,是没看PHP手册。几家公司的PHP基础面试题都可以在PHP手册上找到。哎,现在才知道最好的面试宝典是PHP手册。
下面是一些PHP面向对象基础知识的摘录,摘录内容来自PHP5.1手册。1.类的变量成员叫做“属性”.....
分类:
Web程序 时间:
2014-05-26 06:20:48
阅读次数:
349
出题:要求将一个有序整数数组转换成最小深度的Binary Search
Tree表示;分析:由于需要是最小深度,所以BST应保持平衡,左右节点数大致相当,并且BST中当前根节点大于所有其左子树中的元素,小于所有其右子树中的元素。对于排序数组而言,中间元素必然作为根节点,然后递归对由中间元素分割的左右...
分类:
其他好文 时间:
2014-05-26 03:49:39
阅读次数:
369
出题:一个长度为N的数组,其中的元素取值范围是1到N,要求快速判断数组是否存在重复数字;分析:解法1:如果N个元素的范围都是在1到N,所以如果没有重复元素,则每一个位置恰好可以对应数组中的一个元素之,通过将当前元素k交换到其本身应该在的位
置k,也就是k=array[i], array[array[...
分类:
其他好文 时间:
2014-05-26 03:10:21
阅读次数:
191
出题:在已经排序的数组中,找出给定数字出现的次数;分析:解法1:由于数组已经排序,所以可以考虑使用二分查找确定给定数字A的第一个出现的位置m和最后一个出现的位置n,最后m-n+1就是A出现的次数;使用二分查找可疑快速确定给定数字,但是如果确定其左右范围则比较麻烦,对编码细节要求较高;解法2:Hash...
分类:
其他好文 时间:
2014-05-26 02:54:22
阅读次数:
1285
出题:多人按照从低到高排成一个前后队列,如果前面的人比后面的高就认为是一个错误对;
例如:[176,178,180,170,171]中的错误对为 , , , , , 。
现在要求从一个整数序列中找出所有这样的错误对;分析:逆序对(Inversion Pair):在N个可判断大小的数中,逆序...
分类:
其他好文 时间:
2014-05-26 02:51:07
阅读次数:
278
快速排序是笔试面试经常问到的一个排序。因此首先来复习快速排序。时间复杂度:O(n*lgn)
最坏:O(n^2) 空间复杂度:O(lgn),最坏O(n) 不稳定。
分类:
编程语言 时间:
2014-05-24 11:21:29
阅读次数:
326