程序员面试
文章平均质量分 80
laur0312
这个作者很懒,什么都没留下…
展开
-
设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。解题思路:在栈里添加一个成员变量存放最小元素(或最小元素的位置)。每次push一个新元素进栈的时候,如果该元素比当前的最小元素还要小,则更新最小元素。乍看这样思路挺好。但仔细一想,该思路存在一个重要的问题:如果当前最小元素被pop出去,如何才能得转载 2013-12-10 15:42:31 · 394 阅读 · 0 评论 -
求子数组的最大和
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。解题思路:如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和。不过非常遗憾的是,由于长度为n的数组有O(n^2)个子数组;而且求一个长度为n的数组的和的时间复杂度为O(n),因此这种思路的时间是O(n^3)。很容转载 2013-12-10 15:32:57 · 330 阅读 · 0 评论 -
在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。输出节点值之和与输入整数相等的所有路径。解题思路:当访问到某一结点时,把该结点添加到路径上,并累加当前结点的值。如果当前结点为叶结点并且当前路径的和刚好等于输入的整数,则当前的路径符合要求,我们把它打印出来。如果当前结点不是叶结点,则继续访问它的子结点。当前结点访问结束后,原创 2013-12-10 15:47:11 · 430 阅读 · 0 评论 -
二叉树的建立与显示
#include#includeusing namespace std;struct BinaryTreeNode{ int value; BinaryTreeNode *left; BinaryTreeNode *right;};BinaryTreeNode *CreatBT();void preorder(BinaryTreeNode *T);void inorde转载 2013-12-10 15:49:17 · 918 阅读 · 0 评论