
数据结构与算法
文章平均质量分 58
learning......
SmileGuy17
这个作者很懒,什么都没留下…
展开
-
欧拉通路、欧拉回路、欧拉图和半欧拉图以及 Hierholzer 算法
概念:欧拉通路(又称欧拉路径)、欧拉回路、欧拉图和半欧拉图定义通过图中所有边恰好一次且行遍所有顶点的通路称为欧拉通路(又称欧拉路径)。通过图中所有边恰好一次且行遍所有顶点的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Eulerian graph)。具有欧拉通路但不具有欧拉回路的图称为半欧拉图(semi-Eulerian graph)。欧拉回路是欧拉路径,欧拉路径不一定是欧拉回路。特征1.在无向图中: 无向图G为欧拉图,当且仅当 G为连通图 且 所有顶点的度为偶数。 无向原创 2022-05-12 20:59:53 · 8086 阅读 · 0 评论 -
DFS、回溯算法与 Hierholzer 算法的区别
DFS、回溯算法与 Hierholzer 算法的简单区别:回溯时的处理不同:它们的主要区别不在于是否会回溯,因为 DFS 与 Hierholzer 算法也会回溯。DFS 会将已经访问过的顶点标记为不可再次访问,且不会再撤销,从而使得可搜索路径越来越少。当发现当前顶点没有下一个可访问的顶点时,DFS 会回溯到之前访问的顶点继续查找其有没有下一个可访问的顶点,如果没有则继续回溯,直到全部顶点都访问到为止。回溯算法向前的每一步都会去设置某个状态,而当向前走走不通的时候会进行回溯,回溯时需要把之前设置的状原创 2022-05-12 16:47:11 · 353 阅读 · 0 评论 -
关于优先队列在算法中的使用(通常结合延迟删除)——也是延迟删除思想的学习
优先队列 优先队列可以在常数时间内取出一个序列的最大值或最小值,以对数阶的时间复杂度插入任意值。但是注意最大值优先队列只能取最大值,而最小值优先队列只能取最小值。优先队列在算法中的使用新得 而在算法中的使用优先队列通常不会仅仅取出序列的最值,有时候还会让你删除优先队列的任意值(当然这是没法做到的,这是由优先队列的特点决定的)。而在 Leetcode 的天际线和滑动窗口最大值问题的使用优先队列的解中都会提到 “从优先队列中将该值删除” ,这又是为什么呢? 因为这不是真正意义上的删除,原创 2022-05-07 17:26:06 · 488 阅读 · 0 评论 -
优先队列(Priority Queue)
优先队列(Priority Queue)背景 许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。很多情况下我们会收集一些元素,处理当前键值最大的元素,然后再收集更多的元素,再处理当前键值最大的元素,如此这般。例如,你可能有一台能够同时运行多个应用程序的电脑(或者手机)。这是通过为每个应用程序事件分配一个优先级,并总是处理下一个优先级最高的事件来实现的。例如,绝大多数手机分配给来电的优先级都会被游戏程序的高。定义 在这种情况下,一个合适的数据结构应该原创 2022-05-05 19:56:57 · 450 阅读 · 0 评论 -
栈思想在算法题中的应用
栈思想在算法题中的应用 指的是栈的特性——即先进后(FILO)去解决问题,主要用于以下情况:数据是线性的;问题中常常涉及到数据的来回比较;比如每日温度、括号比配、字符串解码、去掉重读字母等问题;问题中涉及到数据的转置,例如进制问题,链表倒序打印问题; 栈思想只是一个解决问题的参考思想,并不是万能的,它适用于以上这样的情况去解决问题。利用栈思想解决问题时,首先需要透彻的解析问题之后,找出问题解决的规律,才能使用它解决。思想只有指导作用,遇到不同的题目,需要个例分析,在基本的思想上去找原创 2022-05-04 10:23:27 · 334 阅读 · 0 评论 -
补充大话数据结构的没讲到的一些知识点(如动态规划等)
注意,下面都是 C++ 的代码实现计数排序(Counting Sort)基本思想实现逻辑动图演示复杂度分析时间复杂度空间复杂度稳定性代码实现优化改进总结桶排序(Bucket Sort)基本思想实现逻辑动图演示复杂度分析时间复杂度空间复杂度稳定性代码实现总结基数排序(Radix Sort)基本思想实现逻辑动图演示复杂度分析时间复杂度空间复杂度稳定性代码实现总结分治法(Divide and Conquer)分治法的算法思想递归式求解递归式的三种方法代入法递归树法使用递归树法分析归并排序和求斐波那契序列的时间复杂原创 2022-04-29 23:28:12 · 1499 阅读 · 0 评论