首页计算机程序员面试 > 程序员面试模拟试卷3
输入一个单向链表,输出该链表中倒数第k个结点。链表的倒数第0个结点为链表的尾指针。链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; };
输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。
输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入: [*] 定义二元查找树的结点为: struct BSTreeNode // a node in the binary search tree (BST) { int m_nValue; // value of node BSTreeNode *m_pLeft; // left child of node BSTreeNode *m_pRight; // right child of node };
输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 [*] 输出8 6 10 5 7 9 11。
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m个数字。求出在这个圆圈中剩下的最后一个数字。
下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。 template class Array { public: Array(unsigned arraySize):data(0), size(arraySize) { if(size > 0) data = new T[size]; } ~Array() { if(data) delete[] data; } void setValue(unsigned index, const T& value) { if(index < size) data[index] = value; } T getValue(unsigned index) const { if(index < size) return data[index]; else return T(); } private: T* data; unsigned size; };
定义Fibonacci数列如下: [*] 输入n,用最快的方法求该数列的第n项。
输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串“345“,则输出整数345。

    相关试卷

    • 程序员面试模拟试卷14

    • 程序员面试模拟试卷13

    • 程序员面试模拟试卷12

    • 程序员面试模拟试卷11

    • 程序员面试模拟试卷10

    • 程序员面试模拟试卷9

    • 程序员面试模拟试卷8

    • 程序员面试模拟试卷7

    • 程序员面试模拟试卷6

    • 程序员面试模拟试卷5

    • 程序员面试模拟试卷4

    • 程序员面试模拟试卷3

    • 程序员面试模拟试卷2

    • 程序员面试模拟试卷1