算法题集
xiaowei_nbu
Your story may not have a such happy beginning, but that doesn't make who
you are. It is the rest of your story,who you choose to be.
展开
-
[编程之美-01]字符串移位包含的问题
题目:给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位(rotate)得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false。代码一:我们可以把s1循环移位的所有可能都枚举出来,然后逐一与s2进行比较。即,转换常见的枚举算法问题。代码如下:#include<stdio.h>#include<string.h>bo原创 2016-09-24 19:34:07 · 551 阅读 · 0 评论 -
[编程之美-09]字符串的旋转问题
[题目描述]:给定一个字符串,要求将字符串前面的若干个字符移动到字符串的尾部。 [Sample Input] abcdef 3 [Sample Output] defabc基本解法:根据题意我们知道移动的过程如下: abcdef->bcdefa->cdefab->defabc 这样一步步的移动,就会得到结果。代码如下:#include<stdio.h>#include<string.h>v原创 2017-05-07 19:31:53 · 438 阅读 · 0 评论 -
[编程之美-08]求二元树的度
题目:输入一棵二元树的根结点,求该树的深度。 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 例如:输入二元树: 8 / / 6 10 // // 5 7 9 11 输出该树的深度3。 二元树的结点定义如下:struct SBinaryTreeNode // a node of the binary tree{原创 2016-10-20 22:40:21 · 310 阅读 · 0 评论 -
[编程之美-07]层序打印二元树,每层打印一行
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。 例如输入 8/ /6 10 // // 5 7 9 11输出8 6 10 5 7 9 11 我们增加一下难度,我们打印如下的结果: 8 6 10 5 7 9 11 看到这里大家已经知道我们是怎么打印的吧。按行打印。思想:层序遍历的思想,就是引原创 2016-10-20 00:05:41 · 934 阅读 · 0 评论 -
[编程之美-06]输入一颗二元查找树将该树转换为它的镜像
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / / 6 10 / / / / 5 7 9 11输出: 8 / / 10 6 / / / / 11 9 7 5定义二元查找树的结点为:struct BSTreeNode // a n原创 2016-10-19 23:19:11 · 1699 阅读 · 0 评论 -
[编程之美-05]求二叉树中节点的最大距离
题目:如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义”距离”为两节点之间边的个数。写一个程序,求一棵二叉树中相距最远的两个节点之间的距离. 例如: 10 / \ 5 12 / \ 4 7 这棵树的话,最大距离为3.分别路径为4,5,10,12共3条边,7,5,10,12共3条边,所以最大距离为3.递归的思想,分别考虑左右子树的,从根节点开始.代码如下:#in原创 2016-10-19 19:30:33 · 814 阅读 · 0 评论 -
[编程之美-04]判断整数序列是不是二元查找数的后序遍历结果
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 / / / / 5 7 9 11 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。主要考察到二叉原创 2016-10-19 16:15:19 · 797 阅读 · 0 评论 -
[编程之美-03]在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。 从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。 打印出和与输入整数相等的所有路径。 例如输入整数22 和如下二元树 10 / \ 5 12 / \ 4 7 则打印出两条路径:10, 12 和10, 5, 7。 二元树节点的数据结构定义为:struct BinaryTreeNode // a node in the binary原创 2016-10-18 23:32:27 · 750 阅读 · 0 评论 -
[编程之美-02]把二元查找树变成为排序的双向链表
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16 转换成双向链表: 4=6=8=10=12=14=16。首先我们原创 2016-10-18 11:50:41 · 767 阅读 · 0 评论 -
[转]程序员如何快速准备面试中的算法
程序员如何快速准备面试中的算法前言 [转自] July大神 我决定写篇短文,即为此文。之所以要写这篇文章,缘于微博上常有朋友询问,要毕业找工作了,如何备战算法。尽管在微博上简单梳理过,如下图所示: 但因字数限制,许多问题无法一次性说清楚,故特撰此文着重阐述下:程序员如何快速准备面试中的算法,继而推荐一些相关的书籍或资料。顺便也供节后跳槽、3月春季招聘小高潮、及6月毕业找工作的朋友参转载 2016-10-17 20:54:56 · 395 阅读 · 0 评论 -
[编程之美-10]字符串的包含问题
[题目描述] 给定一长字符串 a 和一段字符串 b 。请问, 如何最快的判断出短字符串 b 中的所有字符是否都在长字符串 a 中。 [Sample Input] ABCD BAD ABCD BCE ABCD AA[Sample Output] true false true基本解法:我们遍历字符串b,依次判断b中的每个字符是不是的都在字符串a中。 代码如下:#include<ios原创 2017-05-07 22:30:10 · 528 阅读 · 0 评论