
算法
文章平均质量分 78
EthanPark
中科大硕士. 擅长领域高并发企业级应用性能优化。喜爱钻研源码。业余参与国外Spring以及Servlet,JDBC等Spec的翻译。
展开
-
拓扑排序(一)
以前不知道什么是拓扑排序,最近补充了一下知识才算是知道怎么回事。概念如下:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集原创 2015-07-12 16:19:12 · 1085 阅读 · 0 评论 -
KMP算法详解
说道KMP算法,一定要先指出问题所在之处了,问题如下: 已知一个字符串a,b 想找到在字符串a中b首次完整出现的位置。听到这个问题,首先想到的就是朴素算法,挨个来进行匹配,然后找到对应的答案。朴素算法朴素算法很简单,就是挨着遍历,但是会有很多的重复计算,算法复杂度为O(mn) 代码如下:# 朴素算法def algorithm1(src, target): for i in r原创 2016-02-06 11:38:53 · 943 阅读 · 0 评论 -
最长回文串算法
总的来说,最长回文串算法分为以下几种。暴力法通过遍历整个字符串来说实现对最长回文串的查找 首先一个字符串所有子串,个数为n2个,然后逐个判断遍历即可,算法复杂度O(n3)动态规划中心扩展法Manacher算法这是一个比较牛掰的算法,其实感觉是对中心扩展法的优化,但是我搞了好久才大体搞明白,主要因为其中有几个难点需要对字符串进行变换针对辅助数组的使用优化计算比较难理解算法复杂度分析这个方法的原创 2016-01-29 14:16:05 · 734 阅读 · 0 评论 -
动态规划(一)
基本概念在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分程若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。当然,各个阶段决策的选取不是任意确定的,它依赖于当前面临的状态,又印象以后的发展,当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线,这种把一个问题看作是一个前后关联具有连庄结果的多阶段过程就称为多阶段决策过程,这种问题原创 2016-02-29 13:23:46 · 631 阅读 · 0 评论