程序员面试题
文章平均质量分 70
赫克托尔
尘世间一个迷途小书童~~
展开
-
程序员面试题精选-设计包含min函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元转载 2011-10-02 22:23:29 · 724 阅读 · 0 评论 -
程序员面试题精选--归并排序
采用分治策略一般有三个步骤:1、分解:将n个元素分成各含n/2个元素的子序列2、解决:用合并排序法对两个子序列递归的排序3、合并:合并两个已排序的子序列以得到排序结果。在归并排序时,其长度为1时递归结束。单个元素被视为是已排序好的。参考代码如下:#includeusing namespace std;#define MAX 0x7FFFFFFF //最大可原创 2011-10-23 16:54:04 · 1748 阅读 · 1 评论 -
程序员面试题精选--从头到尾输出字符串
此题是从逆序输出链表变种而来,见何海涛日志http://zhedahht.blog.163.com/1.逆序输出一个字符串,如"hello world!"输出为“!dlrow olleh”.2.计算一个字符串的长度,要求函数中不能声明任何变量。此题简单,在这里原创 2011-10-06 18:06:57 · 1267 阅读 · 0 评论 -
程序员面试题精选-翻转句子中单词的顺序
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。分析:由于编写字符串相关代码能够反映程序员的编程能力转载 2011-10-06 16:52:48 · 1884 阅读 · 0 评论 -
程序员面试题精选--在字符串中删除特定的字符
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。要编程完成这道题要求的功能可能并不难。毕竟,这道题的基本思路就是在第一个字符串中拿转载 2011-10-06 15:28:00 · 6043 阅读 · 0 评论 -
程序员面试题精选-- 字符串的组合
题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。用递归的思路来求字符串的组合:假设我们想在长度为n的字符串中求m个字符的组合。我们先从头扫描字符串的第一个字符。针对第一个字符,我们有两种选择:一转载 2011-10-07 15:05:50 · 1192 阅读 · 0 评论 -
程序员面试题精选---复杂链表的复制
转自何海涛日志 http://zhedahht.blog.163.com/ 题目:有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。其结点的C++定义如下:转载 2011-10-06 17:18:16 · 787 阅读 · 0 评论 -
程序员面试题精选-判断整数序列是不是二元查找树的后序遍历结果
转自何海涛日志http://zhedahht.blog.163.com/题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:转载 2011-10-05 18:18:20 · 884 阅读 · 0 评论 -
程序员面试题精选--树为另一树的子结构
题目:二叉树的结点定义如下:struct BinaryTreeNode{ int value; TreeNode* lchild; TreeNode* rchild;};输入两棵二叉树A和B,判断树转载 2011-10-05 16:07:17 · 728 阅读 · 0 评论 -
程序员面试题精选-- 判断二叉树是不是平衡的
转自何海涛日志http://zhedahht.blog.163.com/题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如下图中的二叉树就是一棵平衡二叉树:我们很容易就能想转载 2011-10-05 15:45:53 · 1296 阅读 · 1 评论 -
程序员面试题精选--调整奇偶数顺序
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。思路:维护两个索引 low 和 high, low初始化为指向数组中第一个元素,只能向后递增;high指向数组最后一个元素,只能向前递减。若原创 2011-10-04 22:56:04 · 1344 阅读 · 2 评论 -
程序员面试题精选--栈的push、pop序列判定
题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的原创 2011-10-02 17:38:51 · 1178 阅读 · 0 评论 -
程序员面试题精选--扑克牌的顺子
转自http://zhedahht.blog.163.com/题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。 分析:这题目很有意思,是一个典转载 2011-10-04 17:00:59 · 1125 阅读 · 1 评论 -
程序员面试题精选-颠倒栈
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。只消两个递归即可,直接看代码吧!#include#includeusing namespace std;template原创 2011-10-02 20:35:03 · 955 阅读 · 0 评论 -
程序员面试题精选--从文件中随机提取一个字符串
这是前几天去新浪微博面试被问到的问题!题目是这样的:一个文件中按行存放若干字符串,要求只能按顺序遍历文件一次,不能用表格存储字符串偏移,随机返回一个字符串。本人愚笨,在那挣扎了半天没有结果,悻悻而归。今天在看《C专家编程》,猛然发现,附录A.6就是原题!真是悔恨啊,读书太少啊,苍天大地啊~~它是这样解的:基本的技巧是在幸存的字符串中挑选,并在过程中不断更新。打开文件并保原创 2011-11-07 22:47:58 · 2902 阅读 · 0 评论