算法
文章平均质量分 79
earlene_wyl
这个作者很懒,什么都没留下…
展开
-
几何搜索
原创 2019-03-18 22:48:07 · 364 阅读 · 0 评论 -
求a,b的最大公约数
用辗转相除法确定两个正整数 a 和 b(a≥b) 的最大公因数gcd(a,b):当a %b ==0时,gcb(a,b)=b,否则gcd(a,b)=gcd(b,a %b)/* 最大公约数 */long gcd(long a, long b) { long t = a % b; while (t) { a = b; b = t; ...原创 2019-08-04 18:55:14 · 1756 阅读 · 0 评论 -
基于数组的循环队列实现
以数组作为底层数据结构时,一般将队列实现为循环队列。这是因为队列在顺序存储上的不足:每次从数组头部删除元素(出队)后,需要将头部以后的所有元素往前移动一个位置,这是一个时间复杂度为O(n)的操作:可能有人说,把队首标志往后移动不就不用移动元素了吗?的确,但那样会造成数组空间的“流失”。我们希望队列的插入与删除操作都是O(1)的时间复杂度,同时不会造成数组空间的浪费,我们应该使用循环队列。所...原创 2019-07-21 13:48:46 · 708 阅读 · 0 评论 -
剑指offer 10 斐波那契数列,跳台阶,变态跳台阶,矩形覆盖
剑指offer 10-1 斐波那契数列题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39解题思路:斐波那契数列公式: f(n) = n (n<=1 ,即n=0,1) f(n) = f(n-1)+f(n-2) (n>1...原创 2019-07-28 23:19:56 · 125 阅读 · 0 评论 -
字符串-最长公共子序列(LCS)
找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。cnblogs与belong,最长公共子序列为blog(cnblogs, belong),最长公共子串为lo(cnblogs, belong)这两个问题都是用空间换空间,创建一个二维数组来记录之前的每个状态.最长公共子序列的状态转移方程:分析参考:https://www.cnbl...原创 2019-07-15 21:49:59 · 792 阅读 · 0 评论 -
字符串-最长公共子串(两个,多个)
关于暴力解和动规说的最好的https://www.cnblogs.com/ider/p/longest-common-substring-problem-optimization.html空间复杂度 O(1)还是左神的p225说的好。其实也没什么意思orz!问题:有两个字符串str1和str2,求出两个字符串中最长公共子串长度。暴力解:1)把str1和str2的所有子串都找到,然...原创 2019-07-16 01:40:45 · 8007 阅读 · 0 评论 -
algorithms总结
算法复杂度:常见的增长数量级函数:1,logN,N,NlogN, N^2,N^3,2^N除了指数级别都满足:T(N)~aN^blgN所以T(2N)/T(N)~2^b (详见算法p122)1.并查集并查集(Union-Find)算法介绍 - dm_vincent的专栏 - CSDN博客 https://blog.csdn.net/dm_vincent/artic...原创 2019-05-03 17:25:02 · 382 阅读 · 0 评论 -
异或
简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。性质1、交换律2、结合律(即(a^b)^c == a^(b^c))3、对于任何数x,都有x^x=0,x^0=x4、自反性 A XOR B XOR B = A xor 0 = A异或运算最常见于多项式除法,不过它最重要的性质还是自反性:A XOR B XOR B = A,即对给定的数A,用同样的运算因子(B)作...原创 2019-06-20 00:48:54 · 4861 阅读 · 0 评论 -
Manacher算法(一个字符串中找到最长回文子串)
零、预备知识 Manacher用于在一个字符串中找到最长的回文子串。 回文串:正着念和反着念一样,例如aabbaa,anna等。 注意子串与子序列的区别: 子串必须是在原字符中可以找到的。比如 " I am a student"。am是子串(当然也是子序列),但是aa就不是子串了(是子序列)。一、算法原理 Manacher算法通常人称马拉车算法,用于在一个字符...原创 2019-08-01 22:50:23 · 141 阅读 · 0 评论 -
总结-卡特兰数
取个巧:实际碰到题目,如果你没有很好的推出h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)这个递推公式,但是假如h(1)=1,h(2)=2 ,h(3)=5,h(4)=14 ,那就当卡特兰数来做。两种计算方法代码:int foo1(int n) { if (n == 0) return 1; int res = 1; for (int i = n + 1; i <= 2 * n; ++i) res...原创 2019-05-17 16:22:48 · 172 阅读 · 0 评论 -
斐波那契数列
f(n) = n (n<=1 ,即n=0,1)f(n) = f(n-1)+f(n-2) (n>1)递归版:int foo(int n){ if(n<=1) return n; return foo(n-1)+foo(n-2);}尾递归版:尾递归就是函数调用出现在调用者函数的尾部, 因为是尾部, 所以根本没有必要去保存...原创 2019-05-16 19:24:01 · 594 阅读 · 0 评论 -
刷题(11)-图(3)
图的表示: 稀疏图 邻接表 稠密图 邻接矩阵深搜 DFS实现:递归 非递归应用: 连通分量广搜 BFS实现: 队列无向图表示:邻接表/邻接矩阵可达性: DFS (BFS也可)单点最短路径:BFS连通分量: DFS (BFS并查集)有向图:表示:邻接表/邻接矩阵可达性: DFS (BFS也可)单点...原创 2019-10-25 00:12:54 · 175 阅读 · 0 评论 -
刷题(11)-图(2)
图的表示: 稀疏图:邻接表(邻接链表数组) (e.g A[2]里面放的是一个链表,是和节点2相连的节点) 稠密图:邻接矩阵 (n个接点,nxn个矩阵,i-j相连,A[i][j], A[j][i] 为true)DFS(深度优先搜索):基本思路: 不撞南墙不回头 寻找离起点最远的顶点,只在...原创 2019-04-14 14:34:45 · 320 阅读 · 0 评论 -
单向链表相交的一系列问题
单向链表相交的一系列问题问题描述总体代码1.有无环及入口2. 2个无环相交3. 2个有环相交全部代码问题描述两个单向链表,求第一个相交的点,实际这是3个问题!!!怎么判断 1个链表是否有环 并找到环的入口怎么找到2个无环单链表第一个相交的节点怎么找到2个有环单链表第一个相交的节点tips: (假如一个有环,一个无环,两个单向链表(因为是单向链表)不可能相交)总体代码先判...原创 2019-07-23 01:35:52 · 192 阅读 · 0 评论