
算法
文章平均质量分 76
qjt_uestc
这个作者很懒,什么都没留下…
展开
-
9、判断整数序列是不是二元查找树的后序遍历结果
第9 题判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9原创 2011-07-22 16:29:05 · 645 阅读 · 0 评论 -
29.栈的push、pop 序列
29.栈的push、pop 序列题目:输入两个整数序列。其中一个序列表示栈的push 顺序,判断另一个序列有没有可能是对应的pop 顺序。为了简单起见,我们假设push 序列的任意两个整数都是不相等的。比如输入的push 序列是1、2、3、4、5,那么4、5、3、原创 2011-07-29 17:39:03 · 922 阅读 · 0 评论 -
第25 题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
第25 题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr 所指内存。例如:"abcd1234原创 2011-07-29 15:29:51 · 2636 阅读 · 0 评论 -
第18 题:题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,
第18 题:题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字0 开始,每次从这个圆圈中删除第m 个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数字的下一个继续删除第m 个数字。求出在这个圆圈中剩下的最后一个数字。 使用数组来存储原创 2011-07-27 13:43:23 · 1875 阅读 · 0 评论 -
第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。分析:这道题是2006 年google 的一道笔试题。 申请26个数据结构来记录每个字符出现的次数及最后一个的位置。如果字符包含数字或者其他符号的话,可以申请256个该类型数组结构来存原创 2011-07-27 13:39:11 · 3646 阅读 · 0 评论 -
第15 题:题目:输入一颗二元查找树,将该树转换为它的镜像
第15 题:题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入:8/ \6 10/\ /\5 7 9 11输出:8/ \10 6/\ /\11 9 7 5定义二元查找树的结点为:原创 2011-07-26 13:19:15 · 1337 阅读 · 0 评论 -
第16 题:题目(微软):输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
第16 题:题目(微软):输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。例如输入8/ \6 10/ \ / \5 7 9 11输出8 6 10 5 7 9 11。 使用队列数据结构,并且在每一层的末尾插入一个节点表示换行。代码:#include原创 2011-07-26 13:47:33 · 1322 阅读 · 0 评论 -
第14 题:题目:输入一个已经按升序排序过的数组和一个数字
第14 题:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15 和数字15。由于4+11=15,因此输出4 和1原创 2011-07-26 10:24:11 · 1373 阅读 · 0 评论 -
11、求二叉树中节点的最大距离...
第11 题求二叉树中节点的最大距离...如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离。 /* 分析: 1、具有最大距离的两个节点必定是叶子节点,如果不是叶子节点原创 2011-07-26 09:51:54 · 1523 阅读 · 0 评论 -
编程之美 2.8 找符合条件的正数
题目: 任意给出一个正整数N,求一个最小的正整数M(M>1),使得N * M 的十进制表示形式里只含有1和0. method 1:如书中给出的,最最直接的方法就是,从M =2,开始一次的加1,测试乘积是否满足条件。伪代码:for (int M = 2; ; M++){ p原创 2011-07-15 10:10:27 · 1525 阅读 · 1 评论 -
1、把二元查找树转变成排序的双向链表
1. 把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ \6 14/ \ / \4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数原创 2011-07-19 20:08:00 · 1329 阅读 · 0 评论 -
10、翻转句子中单词的顺序
第10 题翻转句子中单词的顺序。题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如输入“I am a student.”,则输出“student. a am I”。 先对每个单词进行翻转,然后原创 2011-07-22 17:31:26 · 525 阅读 · 0 评论 -
2、设计包含min 函数的栈
2.设计包含min 函数的栈。定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。 思路: 1、min,push,pop都需要时间复杂度为O(1), 所以树,堆等数据结构都不能用 2、栈只有通过push原创 2011-07-19 20:11:26 · 2203 阅读 · 1 评论 -
3、求子数组的最大和
3.求子数组的最大和题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10,原创 2011-07-20 09:58:41 · 733 阅读 · 0 评论 -
编程之美 2.18 数组分割
题目: 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数组,并使两个子数组的和最接近。 运用动态规划的方法求解此问题, 找最接近数组和sum的一半的一个n个数据的数列。 找小于sum/2的一个数组。分配数组isOk[sum/2], isOk[i] 表示是否存在序列之和为i分配数组vv_data[sum/2], vv_data[i]表述序原创 2011-10-26 20:32:25 · 2020 阅读 · 2 评论