题目:输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。请给出解决问题的算法,并证明该算法。 分析:这是0…
分类:程序员面试题精选
程序员面试题精选100题(17)-把字符串转换成整数[算法]
题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串”345″,则输出整数345。 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序…
程序员面试题精选100题(18)-用两个栈实现队列[数据结构]
题目:某队列的声明如下: template<typename T> class CQueue{public: CQueue() {} &n…
程序员面试题精选100题(27)-二元树的深度[数据结构]
题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 例如:输入二元树: &n…
程序员面试题精选100题(16)-O(logn)求Fibonacci数列[算法]
题目:定义Fibonacci数列如下: / 0 &n…
程序员面试题精选100题(35)-两链表的第一个公共结点[数据结构]
题目:两个单向链表,找出它们的第一个公共结点。 链表的结点定义为: struct ListNode { int &nbs…
程序员面试题精选100题(32)-不能被继承的类[C/C++/C#]
题目:用C++设计一个不能被继承的类。 分析:这是Adobe公司2007年校园招聘的最新笔试题。这道题除了考察应聘者的C++基本功底外,还能考察反应能力,是一道很好的题目。 在Java中定义了关键字final,被fina…
程序员面试题精选100题(06)-二元查找树的后序遍历结果[数据结构]
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true ,否则返回false 。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:  …
程序员面试题精选100题(51)-顺时针打印矩阵[算法]
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 &…
程序员面试题精选100题(23)-跳台阶问题[算法]
题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。 分析:这道题最近经常出现,包括MicroStrategy等比较重视算法的公司都曾先后选用过个这道题作为面试题或者笔…
程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下: struct ListNode { int &n…
程序员面试题精选100题(34)-数组中只出现一次的数字[算法]
题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 分析:这是一道很新颖的关于位运算的面试题。 首先我们考虑这个问题的一个简…