14-KMP算法
引假设一个字符串str,长度为N。还有个字符串match,长度为M。且M <= N。确定str中是否有某个子串是等于match的,有就返回该子串的的头在str中的位置。暴力匹配关于上面的问题,我们可以很快的想到所以双重for循环,以str中的每个开头,都去尝试匹配match。代码也很简单,所以
13-类似斐波那契数列的递归
求斐波那契数列方法的优化线性求解斐波那契数列的线性求解(O(N))的方式非常好理解。Fk+2 =Fk+1+FK//线性计算public static int f2(int n) {if (n < 1) {return 0;}if (n == 1 || n == 2) {return 1;}in
12-滑动窗口和单调栈
滑动窗口定义滑动窗口是一种想象出来的数据结构:滑动窗口有左边界L和有边界R在数组或者字符串或者一个序列上,记为S,窗口就是S[L…R]这一部分L往右滑意味着一个样本出了窗口,R往右滑意味着一个样本进了窗口L和R都只能往右滑滑动窗口内的最大值我们通过L和R来确定一个窗口,但不管L还是R滑动之后,都会让
10-并查集结构和图相关的算法
并查集定义:有若干个样本a、b、c、d…类型假设是V在并查集中一开始认为每个样本都在单独的集合里用户可以在任何时候调用如下两个方法 :boolean isSameSet(V x, V y) : 查询样本x和样本y是否属于一个集合void union(V x, V y) : 把x和y各自所在集合的所