数据结构与算法
文章平均质量分 89
数据结构与算法笔记和例题
NotFount Error
这个作者很懒,什么都没留下…
展开
-
数据结构与算法---Manacher算法
manacher算法是处理回文子串的一种经典算法。处理回文子串一般使用暴力匹配,动态规划,中心扩散,以及manachar。在写manacher算法前我们先了解一下中心扩散以及动态规划。暴力匹配比较简单就不再阐述了。中心扩散法中心扩散法,顾名思义就是以某一个位置为中心,向周围扩散,直到满足条件或到达边界。中心扩散法的思路是:遍历每一个索引,以这个索引为中心,利用“回文串”中心对称的特点,往两边扩散,看最多能扩散多远。代码实现: public String longestPalindrome1(Str原创 2021-05-15 18:32:15 · 475 阅读 · 8 评论 -
数据结构与算法---B+树
再了解B+树之前如果还有不清楚B-树的可以了解先去一下,方便后续理解。B-TreeB+Tree简介B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。定义B+树是B树的一种变形形式,B+树上的叶子结点存储关键字以及相应记录的地址,叶子结点以上各层作为索引使用。一棵m阶的非空B+树满足如下条件:每个结点至多有m个子女;除根结点外,每个结点至少有m/2个子结点,.原创 2021-05-19 14:24:48 · 855 阅读 · 0 评论 -
数据结构与算法---KMP算法
对于字符串匹配的算法比较多,像暴力匹配,Boyer-Moore 算法、Sunday 算法,以及我们今天要讲的KMP算法(Knuth-Morris-Pratt 算法)。在去了解暴力匹配之前我们先了解了解暴力匹配暴力匹配暴力匹配在匹配不上的时候都会将指针指向本次进行匹配的【发起点】的下一位置。而模式串的指针移至起始位置。尝试匹配,发现对不上,原串的指针会一直往后移动,直到能够与匹配串对上位置。不难得知暴力匹配的时间复杂度为 O(n*m)(n为原串的长度,m为模式串的长度);空间复杂度为O(1),.原创 2021-05-16 14:34:38 · 180 阅读 · 0 评论 -
leetcode数据库例题讲解
本篇所有题均来自leetcode,刷题必备第二高的薪水leetcode原题链接编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应.原创 2021-10-27 12:28:18 · 122 阅读 · 0 评论 -
数据结构与算法---B-Tree
手撕B-Tree注意不是“B减Tree”,而是“B杠Tree”,B-Tree就是B树,没有所谓的B减树!!!B树是一种平衡多叉排序树,这里指的平衡是指所有叶节点都在同一层上,从而避免出现像二叉排序树那样的分支退化现象;多叉是指多于二叉,因此B树是一种动态查找效率较二叉排序树更高的树结构。如图所示:探讨B树之前,我们先了解关于B树的一些概念:B树的 阶 :就是B树中每个结点最多子节点个数,例如2-3树的阶是 3 ,2-3-4树的阶是 4 ;(下面会以2-3树来讲解)B-树的 关键字 :结原创 2021-05-18 21:22:17 · 541 阅读 · 0 评论 -
数据结构与算法---红黑树
手撕红黑树1.什么是红黑树?红黑树(Red Black Tree) 是一种自平衡二叉查找树,在1972年由Rudolf Bayer发明的,当时被称为平衡二叉B树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的“红黑树”。红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。与二叉树相比,在TreeNode中加了color属性原创 2021-05-15 09:45:15 · 258 阅读 · 2 评论 -
数据结构与算法----十大排序
在讲解各大排序算法前,我们先了解一下稳定排序,就是待排序的元素列中可能存在两个或两个以上关键字相等的记录。排序前的序列中Ri领先于Rj(即i<j).若在排序后的序列中Ri仍然领先于Rj,则称所用的方法是稳定的。比如int数组[1,1,1,6,4]中a[0],a[1],a[2]的值相等,在排序时不改变其序列,则称所用的方法是稳定的。冒泡排序这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。.原创 2021-05-22 15:41:12 · 185 阅读 · 0 评论