算法入门
金色周卓
这个作者很懒,什么都没留下…
展开
-
java红黑树的理解与实现
红黑树,一个很牛x的数据结构,作为目前JDK的hashmap的底层,是一个兼顾了空间和时间的完美二叉查找树,在AVL的平衡性上做出了巨大改进。首先它的本质是一种特殊的AVL树,祖父辈是二叉排序树,就是那个左子节点必定小于等于它,右子节点必定大于它的树。首先要了解红黑树就要从他的基本性质说起,1.根节点必定为黑色2.不能有两个连接的红色节点3.节点颜色只能为红或者黑4.任意节点到每个叶子节点途径的黑色节点数都是相同的5.所有的子节点(NIL)必定为黑色第一个性质,硬性规定,没有什么好说的第二个原创 2020-08-13 17:21:23 · 316 阅读 · 0 评论 -
KMP算法的next数组最简单粗暴的掌握
“KKP算法”,又称看毛片算法(我瞎说的),这个算法的引入极大地优化了字符串匹配的匹配的效率。是一个十分著名的算法。它的原理就是通过给要匹配的字符串加一个next数组,以这个数组来作为它的回溯指导,减去不必要的回溯。那么首先来看一下next数组的规则是什么,我简单概括一下,就是判断当前位置的后缀有无前缀匹配,如果有,假设后缀字符串长度为n,为多少就在当前位置填n+1;举个简单的例子,字符串T和...原创 2020-03-26 19:16:49 · 236 阅读 · 0 评论 -
多重背包问题以及它的二进制及单调队列优化问题
多重背包问题,假设有物品a,b,c价格和质量分别为{1,2,3}和{1,3,4}现规定每种物品允许装入的数量为{7,5,3};然后给定背包容量n;求解背包能装下的最大价值为多少?这个问题很像之前的01背包问题,只不过他是限定了我们对物品的数量要求,先看解法1通法怎么解决,很简单就能分析出他的状态转移方程是 f(n)=max(f(n),f(n-k*w)+k*v);k为常量,w,v为重量和价值。然后接下来的事情就非常简单我们直接上代码public static int soluti...原创 2020-07-28 18:44:04 · 243 阅读 · 0 评论 -
背包第三篇,完全背包问题详解
本次要讲的是完全背包问题的详解:他和01背包有很多相同之处;可以参考我之前的01背包,然后就能更好的理解这个了。首先介绍问题,现有物品a,b,c三样,价格分别为{1,4,3};质量分别为{1,3,2},现在求一个背包容量为n的背包怎么装物品的价值为最大;商品数量为无限,01背包问题和完全背包问题的差别就在于01只能放1次,完全背包可以放多次。那么我们似乎就可以得到他的算法int dp[背包容量+1];//背包最大价值int v[],w[];//物品质量、物品价值for(int i=0;i<原创 2020-07-26 19:11:47 · 427 阅读 · 0 评论 -
01背包问题第二篇,空间优化
这是第二篇我写的关于01背包的问题:第一篇在我的博客有,建议看过或者知道背包问题二维解法的再看这篇文章,因为这篇文章只讲优化二维数组降到一维首先还是那三步,第一步初始化数组,f[0][j]=0,f[i][0]=0;因为这里降成了一维所以我们要在代码里完成部分初始化,降维之后我们的最高值令(状态转移方程)变成了f[ m ] (m为背包最大容量)=max( f[j] ,f[j-v[i]] + w[i]),f[ m ]表示当前物品质量为m时的最大价值。直接看代码public static原创 2020-07-18 19:04:45 · 259 阅读 · 0 评论 -
剑指offer动态规划算法题详解
输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。这是一道很简单的动态规划算法题,但是重在思路,想的过程。我们首先分析题目,求的是子数组的和,那么其实这个更简单了。一维数组填表,我们用数组nums = [-2,1,-3,4,-1,2,1,-5,4]举例:接下来我们解释为什么这么去填表:如同背包问题一样,这个题的题解也是要依赖于前面问题的解的将第一个值填入,因为没有比较所以直接填入,第二个值填入,与前面子问原创 2020-07-14 18:14:26 · 2417 阅读 · 0 评论 -
小白---动态规划算法入门解决01背包问题
首先介绍下动态规划算法,他和分治法有点相似但又不同,两者都是将问题划分为若干个子问题进行结决,但是动态规划算法划分的子问题之间是有关联的,后一步的问题的解会建立在之前解决的问题解之上。就是后面的结果需要参照前面的结果,我们用最简单的01背包问题带入。01背包问题,一个主播要进行直播带货,但是他只能带4000磅的货,多了库存放不下,然后每种商品只能选择一件,有1.圆珠笔一件1000磅,卖15k,2.皮包一件4000磅,30k,3.红酒一件,20k,然后求最优解。首先分析问题,这个问题你做的话很简单但是要让原创 2020-07-12 19:18:18 · 359 阅读 · 0 评论