经典面试题
文章平均质量分 66
xulg1984
大步走啊
展开
-
把二元查找树转变成排序的双向链表
1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表 4=6=8=10=12=14=16。 首先我们定义的二元查找树 节点的数据结构如下: st转载 2012-02-01 21:32:34 · 695 阅读 · 0 评论 -
求子数组的最大和
1.题目:求子数组的最大和 输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18 2. 解题思路 当我转载 2012-02-02 22:19:11 · 412 阅读 · 0 评论 -
设计包含min函数的栈
1.题目 设计包含min函数的栈。 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。 要求函数min、push以及pop的时间复杂度都是O(1)。 2. 实现思想 以空间换取效率,在每个栈元素中增加一个变量,用以记录当前栈的最小值 3. 代码实现 // 栈的最大空间 #define MAX_STACK_SIZE 100 /转载 2012-02-02 21:54:04 · 1330 阅读 · 0 评论 -
在二元树中找出和为某一值的所有路径
1. 题目 在二元树中找出和为某一值的所有路径 题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如 输入整数22和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12和10, 5, 7。 二元树节点的数据结构定转载 2012-02-03 23:17:27 · 505 阅读 · 0 评论 -
查找最小的k个元素
1. 题目 查找最小的k个元素 题目:输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。 2. 分析 初始化最小的k个数,遍历原始数组,将数组的每个元素与k个数中最大的数max做比较,假如比max大则替换 3. 参考代码 #include using namespace std;转载 2012-02-04 12:50:33 · 447 阅读 · 0 评论 -
翻转句子中单词的顺序
1.题目: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。 为简单起见,标点符号和普通字母一样处理。 例如输入“I am a student.”,则输出“student. a am I”。 2. 分析 从后向前找 初始时当前指针指向末尾元素 向前找空格,找到空格时输出其后的所有元素,递次向前找 3原创 2012-02-04 19:06:15 · 475 阅读 · 0 评论 -
快速排序算法
/* 快速排序 ** 基本思想: ** (1) 先从数列中取出一个数作为基准数 ** (2) 分区过程,将比这个数大的数全放到它的右边,其他的放到它的左边 ** (3) 再对左右区间重复第二步,直到各区间只有一个数 ** 参数说明: ** pData : 输入的数组 ** nLen : 数组的长度 ** nStart: pData中开始排序的位置,从0开始原创 2012-10-12 13:45:26 · 404 阅读 · 0 评论 -
求字符串中最长连续递增子数字串
求字符串中最长连续递增子数字串 例:输入串为a23b6489wci6782345xy,则输出为2345 注意,只需要考虑一位数,所以对任意字符串,最长可能的输出为0123456789. 我的算法: BOOL FindSub(const char pStr[], int nLen, int &StartIndex, int &EndIndex) { // 对传入值进行初始化原创 2012-10-17 13:57:04 · 2935 阅读 · 2 评论