题目:某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。 分析:排序是面试时经常被提及的一类题目,我们也熟悉其中很多种算法,诸如插入排序、归并排序、冒泡排序,快速…
分类:程序员面试题精选
程序员面试题精选100题(39)-颠倒栈[数据结构]
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。 分析:乍一看到这道题目,第一反应是把栈里的所有元素逐一pop出来,放到一个数组里,然…
程序员面试题精选100题(10)-排序数组中和为给定值的两个数字[算法]
题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15…
程序员面试题精选100题(61)-数对之差的最大值[算法]
题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。 分析:看到这个题目,很多人的第…
程序员面试题精选100题(50)-树的子结构[数据结构]
题目:二叉树的结点定义如下: struct TreeNode { int m_nValue; &n…