
数据结构与算法
文章平均质量分 86
爱水人家
脚踏实地往前冲
展开
-
C++ priority_queue的使用
priority_queue的使用及内部实现理解大/小顶堆中元素顺序的规律原创 2022-01-20 17:10:03 · 756 阅读 · 0 评论 -
字典树or前缀树的实现
前缀树,又称Trie树 或 字典树,所以当然是一个树,并且是多叉树。1)树从0号节点开始;2)每一条边上都标识有一个字符,这些字符可以是任意一个字符集中的字符;3)终结点的通路与集合中的字符串是一一对应的。比如,对于都是小写字母的字符串,字符集就是'a' - 'z';对于都是数字的字符串,字符集就是'0' - '9';对于二进制字符串,字符集就是0和1。原创 2022-01-09 12:10:03 · 651 阅读 · 1 评论 -
兜兜的乐扣刷题算法小记(不停更)
1、对于典型套路类算法题目,比如滑动窗口类题目,解题关键:根据题意,分析数据,找到数据背后的有助于解题的规律。这些规律往往是一些数学上的递推式子。2、对于dynamic programing类题目,15分钟内,如果自己没有解出来,就直接看官方解答。但要注意的是,一边看答案一边套用labuladong关于动态规划的解题技巧来理解。这样做能加深对动态规划类题目的一般套路理解。3、遇到字符类题目,可以直接视作int[26]进行hash映射了。都可以不用Map了。这牺牲了小部分空间,但是极大地节省了时间复杂原创 2022-02-22 19:29:05 · 1431 阅读 · 0 评论 -
归并排序+逆序对
第二次接触MergeSort与Inversions(逆序对),这次弄懂了每一个细节,很好的理解了两者之间关系。下面总结一下相关技巧。1.MergeSort和quickSort类似,主要采用了Divide-and-Conquer的思想,也就是将原本规模为1的问题,二分为规模相近的两个独立子问题,同时求解。因此这里递归通常是常用技巧。这里难点应该在边界条件的判断上。(当然这也是算法通有难点)。...原创 2019-08-25 19:43:15 · 354 阅读 · 0 评论 -
k-选取问题之快速选取策略quickSelection
1. 问题描述: k-选取问题:从一组无序数组中,找出第k大的元素。2. 思路分析: 通常想到的是先排序,然后直接取出秩为k的元素,即为所求解。但是根据比较式算法的结论:该算法最坏情况下需要O(nlogn)时间复杂度。对于一个容量较大的数组来说,复杂度太高。 这里介绍一种基于减而治之、逐渐逼近的策略,即利用二分思想来解决这个问题。它可以在最好或...原创 2019-08-28 17:15:29 · 966 阅读 · 0 评论 -
通俗易懂的并查集解释(附简单代码)
碰巧在学习kruskal算法来实现最小生成树,其中用到了并查集,然后详细研究了并查集。找到一篇好的链接。原文链接参考:https://blog.youkuaiyun.com/qq_41593380/article/details/81146850具体并查集解释参考链接。代码如下:#include<iostream>#include<cstdio>#include<...转载 2019-08-29 22:09:45 · 421 阅读 · 0 评论