leetcode 刷题整理
摘要:刷题时用到的技巧 1、使用memset进行初始化 memset(a,0,sizeof(a)); memset(a,-1,sizeof(a)); 2、合理使用sort函数,sort(a,a+n),sort(v.begin(),v.end()); 3、 取中值需要小心越界,int mid = l + (
阅读全文
二叉树已知先序和中序或者后序和中序求构造数(这个算法特别神奇)
摘要:首先我先介绍一下关于BST树,BST树又称搜索二叉树,即任意节点的左节点肯定比该节点小,右节点比该节点大。所以当中序遍历的时候,你会惊奇的发现遍历的val竟然是从小到大排序的。 如图就是BST树,先序是5 3 2 1 4 8 7 6 9,中序是1 2 3 4 5 6 7 8 9。知道先序序列后,其实
阅读全文
Prim算法以及Kruskal算法
摘要:Prim算法主要用于计算最小生成树。算法在选取最小路径的时候需要优化,算法思路:从某个顶点开始,假设v0,此时v0属于最小生成树结点中的一个元素,该集合假设V,剩下的点待选择的点为U,然后找寻V中的点与U中的点组成的路径最短,该点为vk。把V集合加入,U集合移除vk。然后重复以上步骤,知道U集合为空
阅读全文
PAT甲级考前整理(2019年3月备考)之三,持续更新中.....
摘要:PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblogs.com/jlyg/p/10364696.html,主要讲了考前注意以及一些常用算法。 1132题
阅读全文
PAT甲级考前整理(2019年3月备考)之二,持续更新中.....
摘要:PAT甲级考前整理之一网址:https://www.cnblogs.com/jlyg/p/7525244.html,主要总结了前面131题的类型以及易错题及坑点。 PAT甲级考前整理三网址:https://www.cnblogs.com/jlyg/p/10364727.html主要是讲132题开始的
阅读全文
红黑树
摘要:红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。 红黑树的性质: 1、节点是红色或者黑色。 2
阅读全文
背包问题简单整理
摘要:hdu2546,01背包,需要有点变形,计算时需要把价格最大的菜先放一边,最后计算。 #include<iostream> #include<cstdio> #include<set> #include<map> #include<vector> #include<iterator> #includ
阅读全文
快速排序
摘要:快速排序就是选定一个参照物,然后比这个参照物小的放它左边,比它大的放右边,然后分别对左边和右边重复以上操作。
阅读全文
数独算法
摘要:其中m_stdSudoKu[9][9]是9*9的数组,用于保存完整的数独。这个函数由于一次可能无法得到数独,所以调用的时候需要循环调用,知道返回true。 该算法原理就是每次得到某个空格数字就要进行3重限制的校对,排除横,竖,3*3宫格已经出现过的数字。
阅读全文
数位DP
摘要:数位DP是用记忆化搜索做的。个人觉得比较难理解。很对函数中的参数比如前导零什么意思也没有说明,所以导致难以学习。 记忆化搜索dfs(int len,int pre,int limit); 第二个参数是前导,主要是为了筛选。比如不要1到100000中不要连续数字62,此时你要要记录前导为6,然后你在当
阅读全文
KMP模板
摘要:kmp算法的最难理解的是next数组的生成,next数组存储的是匹配子串数组前缀与后缀相同长度。该next数组长度为字符串+1,next[0] = -1。 例题: hdu2203 #include<iostream> #include<cstdio> #include<cstring> #inclu
阅读全文
PAT 甲级1135. Is It A Red-Black Tree (30)
摘要:链接:1135. Is It A Red-Black Tree (30) 红黑树的性质: (1) Every node is either red or black. (2) The root is black. (3) Every leaf (NULL) is black. (4) If a no
阅读全文
PAT甲级考前整理(2019年3月备考)之一
摘要:转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种境界。PAT甲级题目总的说卡题目的比较多,卡测试点的比较少,有些题目还会有题意混淆,这点就不吐槽了吧。静下
阅读全文
AVL树模板
摘要:AVL树也是一种搜索二叉树(BST),即左孩纸比父节点小,右孩纸比父节点大。AVL树的插入就是通过遍历找到合适的位置插入,插入后可能会导致高度差大于1,所以需要通过旋转操作进行自平衡。AVL树的删除,找到删除节点,然后找到其子节点下最接近该节点val值的叶子节点,然后把该节点的val赋值为叶子节点的
阅读全文
Hash二次探测
摘要:Hash的二次探测,当hash的长度为n;插入val,当Hash[val]不为0时,选择新地址newval = val +(-) 1*1,val+(-)2*2,val+(-)(n-1)*(n-1); 具体例题见:PAT1078 #include<iostream> #include<cstdio>
阅读全文
BFS小结
摘要:其实bfs本身不难,甚至不需要去学习,只要知道它的特性就可以写出来了。往往,bfs都是用递归做的。递归比循环更容易timeout。所以这次遇到一题bfs,卡时间的就悲剧了。 PAT1076 #include<iostream> #include<cstdio> #include<cstdlib> #
阅读全文
STL之set篇
摘要:insert为插入。set_intersection求交集,set_union求并集,是属于algorithm里的函数。 例题有 PAT甲级1063 #include<iostream> #include<cstring> #include<cstdio> #include<set> #includ
阅读全文
完全二叉树-已知中序排序,输出广度排序
摘要:题目:PAT1064 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int cmp(int a,int b) { return a < b; } int n
阅读全文
Floyd模板
摘要:比较简单的算法:但是当点太多需要剪枝,不然很耗时 hdu1869 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define INF (1<<29) #d
阅读全文
Dijkstra模板
摘要:Dijkstra是求最短路径,从未选过点中找最短的一条路,然后更新其他点到起点的距离。例如选择的最短点为k,则dj[k]表示起点到k之间的距离,此时更新其他点到起点的距离,dj[j] = min(dj[j],dj[k]+dj[k][j]);dj[j]比较原来的长度与经过k掉再到j点的长度,取最小。
阅读全文