#数据结构与算法
文章平均质量分 58
从0到1的过程,会认真学习,有幸能与你一同进步吗。
一起看雪吗_
持续更新Java方面内容,更新的过程也是我在学习的过程,欢迎关注一起讨论学习!
展开
-
循序渐进的6种版本的并查集(java实现版)
并查集并查集并查集很重要的哦~原创 2024-01-02 16:14:00 · 991 阅读 · 0 评论 -
字符串匹配的殿堂级算法:KMP算法详解(Java实现版)
KMP算法真的还挺难的。原创 2023-12-28 21:45:17 · 1206 阅读 · 0 评论 -
线段树/区间树(java实现版详解附leetcode例题)
你还不太会线段树吗?看了这篇就会了。原创 2023-12-23 21:49:20 · 1504 阅读 · 0 评论 -
基于比较的排序算法总结(java实现版)
来看看各种排序算法的稳定性的具体分析吧。原创 2023-12-21 22:31:00 · 932 阅读 · 0 评论 -
模式串匹配和字符串哈希
字符串匹配问题,暴力法或者和哈希表结合方法,拓展思维必看。原创 2023-12-08 00:14:55 · 986 阅读 · 0 评论 -
二分搜索树的删除问题(java详解)
58被删除后寻找58的后继节点替代它,就是58的右子树中的最小值,即59。4)删除左右孩子都有的结点:找d的后继/d的前驱,我们以d的后继为例子。1)删除只有左孩子的结点:以左孩子为根节点的子树替代被删除的节点位置。2)删除只有右孩子的节点:以右孩子为根节点的子树替代被删除的节点位置。最小值:从根节点开始一直向左走直到走不动。最大值:从根节点开始一直向右走直到走不动。3)删除叶子节点:直接删除。原创 2023-12-06 13:52:33 · 379 阅读 · 0 评论 -
哈希表及其基础(java详解)
这么详细你还拿不下哈希表?我不信。原创 2023-12-06 11:17:43 · 2041 阅读 · 0 评论 -
优先队列基础讲解
优先队列的底层实现是堆。所以你每次queue.poll取出来的都是最值(大根堆取出来的是最大值,小根堆取出来的是最小值)。原创 2023-11-30 09:15:43 · 398 阅读 · 0 评论 -
动态规划算法详解进阶篇
当我们画一个跳楼梯的数组时我们会发现,dp[i]的值只跟dp[i - 1]和dp[i - 2]的值有关,所以我们可以用a,b,c三个变量动态保存dp[i - 1]和dp[i - 2]的值。由dp[i][j] = dp[i-1][j] + dp[i][j-1]画一个二维数组可知,我们计算第i行时只用到了i - 1这一行的数据,所以我们只需要动态利用i - 1这一行的数据就可以了。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。网格的左上角 (起始点在下图中标记为 “Start” )。原创 2023-11-27 20:53:05 · 979 阅读 · 0 评论 -
动态规划算法详解基础篇
现在我们可以再返回去看斐波那契数列的动态规划版本的代码的注释,加深一下理解。我们要多刷题,通过套路刷,不理解为啥这样套没关系,先会用套路来做。用递归 -----> 优化成状态保存避免重复计算---->看一下能否变成自底向上。2、字符串问题:如果是两个字符串的则95%用动态规划,剩下的5%比较简单。来找出一些规律,进而更好的去规划一些东西,最后可以避免一些重复计算。1、动态规划一般是最优解,并且关注的是时间上的最优解。开始,后面的每一项数字都是前面两项数字的和。1、求最值问题:最大值、最小值。原创 2023-11-25 11:48:23 · 458 阅读 · 0 评论 -
回溯算法详解
回溯:你处理了之后,再进行”撤销“处理,”撤销“这个动作就是回溯。原创 2023-11-22 22:07:40 · 547 阅读 · 0 评论 -
贪心算法及相关例题
贪心算法更多的是一种思想,没什么套路。原创 2023-11-22 13:40:56 · 1762 阅读 · 0 评论 -
有权图的最短路径算法
我们可以用优先队列获得v这个顶点对应的dis值,不再是v这个顶点序号的最小值了。我们的优先队列取出来的是顶点的序号,但比较起来是比较的dis值。松弛操作有方向性,相当于拐个弯到达某个端点是不是比直接到达某个端点更近。此算法在有向图无向图也成立。我们的起始点是固定点,从起始点出发到达其他各顶点的最短路径。,由于大量的应用不依赖负权边,所以这个算法有非常广泛的应用。可以包含负权边,也可以包含负权环。原创 2023-11-28 20:07:03 · 745 阅读 · 0 评论 -
最小生成树
边上的权是附加的额外信息,可以代表不同公路的收费等你需要的信息。最小生成树Kruskal算法同一张图的不同生成树的权值和大小不同,最小生成树就是求权值和最小的生成树。在选最短的边的同时要注意不要和已选的边形成环。如下图,我们成功选了六条边连接了七个顶点,形成了最小生成树。原创 2023-11-16 12:00:20 · 159 阅读 · 0 评论 -
欧拉回路和欧拉路径
欧拉回路遍历了所有的边,也就意味着遍历了所有的点,但这并不能代表有欧拉回路的地方都有哈密尔顿回路的,如下图的例子。欧拉路径的起始点不能随便选了,只能选取度数是奇数的点。感兴趣的朋友可以自己试着实现欧拉路径的代码实现。原创 2023-11-14 21:49:48 · 103 阅读 · 0 评论 -
桥和割点,以及图的遍历树
孩子的数量是根据树来说的,而不是看根节点有多少个邻边,遍历树不同孩子数量也不同。原创 2023-11-03 23:00:44 · 259 阅读 · 0 评论 -
图论问题建模和floodfill算法
floodfill算法是一种图像处理算法,用于填充连通区域。该算法从一个起始点开始,将所有与该点相邻且颜色相同的像素点都标记为同一区域,并继续递归处理该区域的相邻像素点,直到所有相邻像素点都被标记为该区域。该算法通常用于图像处理、计算机图形学等领域中的填充操作,例如对图像中的某个区域进行颜色填充、图形的边界检测等。原创 2023-11-02 21:42:10 · 885 阅读 · 0 评论 -
比较BFS和DFS
x可以是栈可以是队列,也可以是随机队列、随机容器,一样可以把整张图遍历出来。dfs是栈的递归,bfs是队列的入出。原创 2023-11-01 15:00:40 · 95 阅读 · 0 评论 -
图的广度优先遍历的单源路径、无权图的最短路径问题、BFS性质附Java代码
BFS求解的路径不是一般路,而是最短路。广度优先遍历先遍历离源顶点近的,先遍历的顶点的距离小于等于后遍历的顶点离源顶点的距离。其实这个和树的广度优先遍历的顺序是一模一样的。用一个dis数组来记录距离。原创 2023-11-01 14:49:30 · 149 阅读 · 0 评论 -
图的广度优先遍历讲解附Java代码加详细注释
类比树的广度优先遍历(层序遍历),通过一个队列不断地实现出队的同时把左右孩子入队的操作实现广度优先遍历,值得注意的是图是否有环的情况。用相似的方法可以实现图的广度优先遍历,每个顶点一入队就会被标记成visited,有了标记的顶点下次被访问时就不用入队了。原创 2023-10-31 20:30:22 · 128 阅读 · 0 评论 -
图的深度优先遍历的六种应用附Java代码
思路:找到一个已经被访问过的结点,并且这个结点不是当前节点的上一个结点。思路:从某一点开始逐个染色。原创 2023-10-31 15:01:11 · 253 阅读 · 0 评论 -
【数据结构与算法】二分查找(闭区间与左闭右开两种方法分析)
首先我们的前提是,选取中间的数mid,与target作比较,可以筛选掉一半的数据,然后再选取mid与target作比较,重复此操作直至找到target。这种操作时间复杂度为,还是蛮低的。接下来我们要看两种写法:闭区间[l, r] 和 左闭右开区间[l, r)。原创 2023-09-13 15:13:21 · 422 阅读 · 0 评论 -
【数据结构与算法】重新认识一下数组
【代码】【数据结构与算法】重新认识一下数组。原创 2023-07-20 16:25:19 · 41 阅读 · 0 评论 -
【数据结构与算法】优化后的插入排序法
【代码】【数据结构与算法】优化后的插入排序法。原创 2023-07-19 22:26:33 · 147 阅读 · 0 评论 -
【数据结构与算法】带约束的泛型选择排序法(原地排序不额外开拓空间)
【代码】【数据结构与算法】带约束的泛型选择排序法(原地排序不额外开拓空间)原创 2023-07-19 15:10:16 · 32 阅读 · 0 评论 -
【数据结构与算法】使用泛型的顺序查找
【代码】【数据结构与算法】使用泛型的顺序查找。原创 2023-07-19 10:57:26 · 141 阅读 · 0 评论