算法面试
文章平均质量分 66
sdu程序猿
这个作者很懒,什么都没留下…
展开
-
链表反向打印
输入一个链表,从尾到头打印链表每个节点的值。常规方法,先正向输入到数组中,然后再反向读出。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }*原创 2015-08-07 00:23:26 · 584 阅读 · 0 评论 -
纸牌博弈问题
题目:题目:有一个整型数组A,代表数值不同的纸牌排成一条线。玩家a和玩家b依次拿走每张纸牌,规定玩家a先拿,玩家b后拿,但是每个玩家每次只能拿走最左或最右的纸牌,玩家a和玩家b都绝顶聪明,他们总会采用最优策略。请返回最后获胜者的分数。给定纸牌序列A及序列的大小n,请返回最后分数较高者得分数(相同则返回任意一个分数)。测试样例:[1,2,100,4],4返回:101解原创 2015-08-05 22:40:55 · 4254 阅读 · 3 评论 -
旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。public : int BinarySearch(vector arr, int start, int end) { int i = 0;原创 2015-08-14 16:34:13 · 395 阅读 · 0 评论 -
二叉树构造
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。public: int FindValPtr(vector arr, int val) { int i = 0;原创 2015-08-14 13:51:53 · 349 阅读 · 0 评论 -
按层次打印二叉树
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。模拟一个队列queue,记录已经遍历到的二叉树节点,创建数组l_n记录每层的节点数。首先将根节点加入队列,记录第0层的节点数为1;然后从队列中取出元素,第一次取出根节点,输入到结果中,如果根节点有左子结点或右子节点,添加到队列中,记录下一层的节点数;再取第二层的节点,直到队列为空。public: vector> P原创 2015-08-07 01:32:20 · 2135 阅读 · 0 评论