数据结构与算法
文章平均质量分 90
Joker_咖啡逗
专注于机器学习、深度学习、算法领域
展开
-
数据结构与算法基础篇
入门级别,算法学习总结笔记原创 2023-01-08 20:35:45 · 419 阅读 · 0 评论 -
【KMP算法】详细讲解
其中n为文本串长度,m为模式串长度,在匹配的过程中,根据前缀表不断调整匹配的位置,可以看出匹配的过程是O(n),之前还要单独生成next数组,时间复杂度是O(m)。如果 s[i] 与 s[j] 相同,那么就同时向后移动i 和j 说明找到了相同的前后缀,同时还要将j(前缀的长度)赋给next[i], 因为next[i]要记录相同前后缀的长度。最长相同前后缀的长度为0。找到的不匹配的位置, 那么此时我们要看它的前一个字符的前缀表的数值是多少。next[j]就是记录着j(包括j)之前的子串的相同前后缀的长度。原创 2022-10-20 22:10:14 · 1240 阅读 · 0 评论 -
【链表】——数据结构与算法
链表分为三种:1)单链表:指针域只能指向结点的下一个结点链表是一种通过指针串联在一起的线性结构。每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思),链接的入口节点称为链表的头结点也就是head。如图所示(单链表):2)双链表: 每个结点有两个指针域,一个指向下一个结点,一个指向上一个结点如图所示:3)循环链表:链表首尾相连C++int val;原创 2022-10-14 18:42:08 · 581 阅读 · 0 评论 -
【动态规划】背包问题(详细总结,很全)
暴力的解法是指数级别的时间复杂度。进而才需要动态规划的解法来进行优化!背包问题是动态规划(Dynamic Planning) 里的非常重要的一部分,关于几种常见的背包,其关系如下:在解决背包问题的时候,我们通常都是按照如下五部来逐步分析,把这五部都搞透了,算是对动规来理解深入了。二维dp数组01背包,先遍历物品还是先遍历背包都是可以的,且第二层for循环是从小到大遍历一维dp数组01背包,只能先遍历物品再遍历背包容量,且第二层for循环是从大到小遍历。求组合数:外层遍历物品,内层遍历背包。原创 2022-10-07 10:19:28 · 25171 阅读 · 3 评论