算法
文章平均质量分 65
rylq56m9
这个作者很懒,什么都没留下…
展开
-
morris后续遍历
后续遍历稍显复杂,需要建立一个临时节点dump,令其左孩子是root。并且还需要一个子过程,就是倒序输出某两个节点之间路径上的各个节点。步骤:当前节点设置为临时节点dump。1. 如果当前节点的左孩子为空,则将其右孩子作为当前节点。2. 如果当前节点的左孩子不为空,在当前节点的左子树中找到当前节点在中序遍历下的前驱节点。 a) 如果前驱节点的右孩子为空,转载 2014-03-30 16:24:54 · 733 阅读 · 0 评论 -
线段树
转载地址:http://www.cppblog.com/menjitianya/archive/2016/02/25/212891.html?utm_source=tuicool&utm_medium=referral零、前言一、引例 1、区间最值 2、区间求和二、线段树的基本概念 1、二叉搜索树 2、数据域转载 2016-06-02 21:30:24 · 839 阅读 · 0 评论 -
树状数组
转载地址:http://www.cppblog.com/menjitianya/archive/2015/11/02/212171.html目录 一、从图形学算法说起 1、Median Filter 概述 2、r pixel-Median Filter 算法 3、一维模型 4、数据结构的设计转载 2016-05-30 12:47:25 · 786 阅读 · 0 评论 -
最大连续子序列 及 延伸题目
最大连续子序列问题问题定义: 给定K个整数的序列{ N1, N2, …, NK },其任意连续子序列可表示为{ Ni, Ni+1, …, Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和为20解法1:朴素解法, 时间复杂度 O原创 2016-08-28 23:24:55 · 972 阅读 · 0 评论 -
编程之美-判断两个链表是否相交 (涵其扩展问题)
问题定义两个单向链表的头指针,两个链表都可能带环 1: 判断这两个链表是否相交 2: 如果相交,给出他们相交的第一个节点。无环情况判断链表是否相交单链表相交,意味着相交结点具有相同的内存地址,且相交结点后的所有结点是两个链表共有的。 方法一: 如果两条单链表相交,则将链表B,连接到链表A后面,如图所示(上面的链表是A,下面的链表是B),会形成环路,且链表B的表头一定在环上。因此我们只需要原创 2017-08-15 11:29:04 · 288 阅读 · 0 评论 -
字符串匹配-Sunday算法
Sunday算法匹配原理从前往后匹配,如果遇到不匹配情况,则查看母串S中参与匹配的最后一位的下一位字符,记做C,如果C出现在模板串T中,选择模板串中C最右出现的位置对齐;如果C没有出现在模板串T中,直接跳过该匹配区域。算法演示母串S: S E A R C H S U B S T R I N G 模板串T:S U B S T R I N G开始匹配:原创 2017-08-15 11:32:14 · 305 阅读 · 0 评论 -
动态规划之单调队列
单调队列的性质单调队列中的元素单调递减或单调递增只能在队尾插入,可以从两头删除其目的就是为了保持队列中元素的单调性,从而满足动态规划的最优性问题的需求。从一个例子理解单调队列及其应用问题定义给定一个长度为N的整数数列a1,… ,aN,i=0,1,…,N-1和滑动窗的长度k. 求窗里面所包含的数的最大值。思路1,暴力破解法从数列头部开始,每次移动滑动窗一次,每移动一次,便求出该窗口内的最大数。显原创 2017-08-15 15:25:32 · 432 阅读 · 0 评论 -
编程之美之"子数组的最大乘积"
问题定义给定一个长度为N的整数数组,只允许用乘法,不能用除法,计算任意(N-1)个数的组合中乘积最大的一组。解法1(空间换时间)代码如下:/** * 空间换时间 时空复杂度O(N) * * @param A * @return */ public int findMaxProduct(int[] A) { int[] s =原创 2017-08-15 17:52:08 · 1328 阅读 · 0 评论