
算法
SavantStart
这个作者很懒,什么都没留下…
展开
-
百度面试题:一个单链表,长度未知,如何快速的找出位于中间的那个元素
问题:一个单链表,长度未知,如何快速的找出位于中间的那个元素? 设置两个指针,p1,p2, 开始p1,p2均位于链接的头部。p1 每次步进两步,p2 每次步进一步当p1到达链表的末尾时,p2所在的位置就是链表的中间元素时间复杂度为O(n) 详细情况请见代码:[cpp] view plaincopy转载 2015-03-31 20:47:32 · 1413 阅读 · 0 评论 -
构建二叉树
以一道题目来说明如何建立二叉树。 题目:已知先序遍历,中序遍历 建立二叉树,然后求后序遍历。 e.g. 先序:a b d e i j c f g 中序:d b i e j a f c g 后序:d i j e b f g c a //期望结果 解法:先序中的首元素a 必为该二叉树的根结点,在中序序列里a之转载 2015-04-03 11:16:39 · 383 阅读 · 0 评论 -
二叉树前序、中序、后序遍历相互求法
今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明。首先,我们看看前序、中序、后序遍历的特性: 前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树原创 2015-03-31 11:30:52 · 475 阅读 · 0 评论 -
最短路径—Dijkstra算法和Floyd算法
Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,转载 2015-04-04 12:14:16 · 478 阅读 · 0 评论 -
吸血鬼数字(java)
*吸血鬼数字是指位数为偶数的数字,可以由一堆数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排列。以两个0结尾的数字是不允许的 例如,下列数字都是吸血鬼数字 1260=21*60 1827=21*87 2187=27*81 写一个程序,找出所有4位的吸血鬼数字* void test(){int count = 0,num=原创 2015-04-17 16:19:39 · 472 阅读 · 1 评论