LeetCode刷题笔记
eeeat_fish
这个作者很懒,什么都没留下…
展开
-
二叉树的层序遍历
二叉树的层序遍历实现过程1、首先将二叉树的根节点push到队列中2、判断队列不为NULL3、计算队列里的元素个数size4、输出队头的元素5、判断节点如果有左节点,就将左节点push到队列中。6、点如果有右节点,就将右节点push到队列中;7、将遍历过的节点pop出队列,且size–8、循环步骤4-7,直到size<0;9、循环以上操作,直到tree == NULL。每...原创 2019-02-27 19:26:02 · 241 阅读 · 0 评论 -
Vector学习
Vector学习一:关于vector收录在STL里,是一种特殊的数据结构。它的中文名字叫做“动态数组”或者“不定长数组”,有时也被翻译成“容器”。二:vector的头文件#include< vector >using namespace std;三:vector申明和构造函数vector <数据类型> 动态数组名;vector < int > i...原创 2019-02-27 19:38:05 · 234 阅读 · 0 评论 -
KMP算法
KMP算法的理解和代码实现·示例代码(返回目标字符串第一次出现的位置)void MakeNext(const string &P,vector<int> &next){//计算每个位置的对称值 int q,k; int m=P.size(); next[0]=0; for(q=1,k=0;q&l...原创 2019-02-26 18:39:15 · 149 阅读 · 0 评论 -
Manacher算法
Manacher算法转载自:作者:bestsort原文:https://blog.csdn.net/bestsort/article/details/81637464Manacher用于求解最长回文子串。所谓回文串,便是"abccba"或是“斗鸡山上山鸡斗”这一类的,你会发现从左到右和从右到左读都是同样的内容。而最长回文子串便是求出给定串中最长的那一个回文串。在没了解Manacher...转载 2019-04-03 16:36:33 · 115 阅读 · 0 评论 -
priority_queue/LeetCode 23题
priority_queuepriority_queue的本质是一个堆,堆的概念就是一个存储数据的数组。堆可以看成是一个完全二叉树。其中,根节点最大的堆是大根堆,根节点最小的堆是小根堆。堆中某个节点的值总是不大于或者不小于其父节点的值。算法思想:交换。例如在一个已经是大根堆的堆中插入一个新的值,首先把其插入到堆一个子节点上,称为新的一个节点,如果这个值已经比其父节点要小了,那么就成了。如...原创 2019-04-09 15:32:02 · 778 阅读 · 0 评论 -
DFS深度优先算法/LeetCode 93题
DFS深度优先算法/LeetCode 93题从一个顶点开始,沿着某条线路遍历到该路径的末端,然后回溯,再沿着另一条线进行同样的遍历,直到所有顶点都被遍历完。算法思路:1、任选一顶点作始点 v ,访问该顶点2、沿深度方向,依次遍历 v 的未访问邻接点——直到本次遍历结束3、一次遍历完时,若有未访问顶点:任选一个未访问顶点作起始点,回到第二步总的来说就是一条路走到黑,然后再一步步往回退,退...原创 2019-04-28 23:10:29 · 357 阅读 · 0 评论 -
并查集/LeetCode 990题
并查集/LeetCode 990题并查集并查集在网上已经有非常多的介绍了,这里就简单的说一些概念,贴上基本的函数模型和算法框架。概念:用来判断两个节点之间是否存在关系。通过树桩结构,一个节点只需要直到自己上面的节点是谁即可,根节点的上面一个节点是自己。当两个节点对应同一个根节点的情况就说明这两个节点是可以通过一定的路径连接在一起的。首先int pre[]数组对应的就是每个节点的上一层节点...原创 2019-05-02 15:09:25 · 612 阅读 · 1 评论