![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 81
菜鸟~~
求职意向:C++后台开发
展开
-
线性动态规划问题
1. 三角形中最小路径之和2. 最长递增子序列3. 最长公共子序列原创 2023-03-20 19:45:27 · 375 阅读 · 0 评论 -
动态规划-背包问题
一、01背包问题二、完全背包问题三、多重背包问题四、分组背包问题原创 2023-03-13 09:17:35 · 229 阅读 · 0 评论 -
BF串的朴素算法和KMP算法
一、BF串的朴素算法二、KMP算法1. 引入2. KMP算法的核心思想3. KMP算法的next数组求解思想4. KMP算法代码实现三、KMP算法优化原创 2022-06-07 10:35:51 · 202 阅读 · 0 评论 -
一致性哈希算法---负载均衡
场景一:业务服务器场景二:缓存服务器一致性哈希算法MD5算法一致性哈希算法代码实现原创 2022-05-25 20:11:27 · 1615 阅读 · 0 评论 -
链式哈希表
线性哈希表的缺陷但是链式哈希表可以采用分段的锁,这样既保证了线程安全,又有一定的并发量,提高了效率。当前我们库里面无序的关联容器并没有实现多线程中的线程安全问题,就是并没有去加锁,但是这并不妨碍当我们真正想要实现一个线程安全,能够直接用在多线程环境下的基于哈希表实现的无序关联容器,我们在代码上可以通过分段锁来实现。原创 2022-05-24 15:38:48 · 3768 阅读 · 5 评论 -
哈希表的线性探测法代码实现
线性探测法理论:哈希表增加元素增加元素注意两点:往后遍历寻找空闲位置是环形遍历,否则访问会数组越界发生哈希冲突找空闲位置的时候,有两种情况:这个位置一直是空的没放过元素;这个位置是空的,以前放过元素后来被删除了。哈希表查询:在线性探测写代码要注意:当我们在去找value的时候,先计算哈希值发现它应该放在下标3的位置,取出这个位置的元素却不等于value,说明但是放value的时候发生哈希冲突了,访问4的时候发现位置是空的,如果这个位置一直是空的,没放过元素。此时不需要再往后找va原创 2022-05-24 09:54:25 · 474 阅读 · 0 评论 -
哈希表的理论讲解
有序关联容器:set、multiset、map、multimap,底层用红黑树无序关联容器:unordered_set和unordered_map,底层用链式哈希表。哈希表增删查效率非常高,趋近于O(1),但是没有办法达到绝对的O(1)。哈希表在进行大量的查询会用到,只要是有速度比较快的查询的需求,都可以使用哈希表。如果说既要查的快,还需要对查出来的数据有一定排序要求,此时可以用红黑树。原创 2022-05-23 20:01:26 · 359 阅读 · 0 评论 -
逆波兰表达式
中缀转后缀表达式用一个符号栈遇到数字直接输出遇到符号(当前符号比栈顶符号优先级大的直接入栈,结束;当前符号优先级比栈顶低的或者是同优先级的出栈,继续比较)(1)栈为空,符号直接入栈(2)左括号是一个优先级高的表达式的开始,只要遇到左括号就不用比较优先级直接入栈就行(3)任意符号优先级都比左括号优先级大,直接入栈(4)遇到右括号一直出栈知道遇到左括号为止(5)最后符号栈里面剩下的按原样输出原创 2022-05-21 11:44:32 · 114 阅读 · 0 评论 -
分治限界算法思想和应用
一、分支限界算法思想1. 分支限界法类似于回溯算法,是在问题的解空间树上搜索问题的算法,主要体现在两点不同:2. 分治限界算法基本思想:二、分支限界法的应用1. 集装箱装载问题2. 0-1背包问题原创 2022-04-13 17:51:42 · 2648 阅读 · 0 评论 -
贪心算法思想和应用
算法思想当一个问题具有最优子结构性质时,可以用动态规划法求解,但有时使用贪心算法更简单,更直接而且解决问题的效率更高。例如前面动态规划算法中的硬币问题就可以用贪心算法解决,从算法名字上来看,贪心算法总是做出在当前看来最好的选择,也就是说贪心算法并不从整体最优考虑,它所做出的选择只是在某种意义上的局部最优选择,当然最终希望贪心算法得到的最终结果也是最优的。虽然贪心算法不能对所有问题都得到整体最优解,但是对于很多问题它能够产生整体最优解,或者最趋近于最优解。一般用贪心算法解决问题提问都是:最多、最少.原创 2022-04-12 11:01:54 · 1123 阅读 · 0 评论 -
动态规划算法思想和应用
一. 动态规划算法1. 动态规划算法思想2. 动态规划求解问题的基本步骤二. 动态规划算法问题案例1. 硬币选择问题2. 斐波那契数列3. 最大子段和问题4. 最长非降子序列LIS问题5. LCS最长公共子序列6. 0-1背包问题7. 三角数组求和原创 2022-03-28 09:50:08 · 6134 阅读 · 0 评论 -
分治算法思想及应用
一. 分治算法介绍1. 分治算法思想2. 分治算法适用条件3. 分治算法的引入二. 分治算法的应用1. 快速排序2. 快排划分函数求topk问题3. 归并排序4. 合并k个有序单链表5. 对数时间求中位数算法思想原创 2022-03-22 09:02:01 · 4192 阅读 · 0 评论 -
回溯算法理论及应用
一. 回溯算法基础理论二. 子集树1. 输出所有的子集2. 整数选择问题求解3. 2N整数选择问题4. 挑数字问题(1) 使用子集树解决(2) 使用枚举法解决三. 排列数1. 0-1背包问题2. 排列树理论及代码实现3. 八皇后问题求解4. 基于穷举法的全排列实现原创 2022-03-19 20:09:37 · 1756 阅读 · 0 评论 -
B-树、B+树和B*树
一. B-树(B树)1. 基础知识2. 插入操作3. 删除操作4. B树的磁盘IO优势和搜索效率二. B+树1. m阶B+树和m阶B树的区别2. B+树比B树更适合操作系统的文件索引和数据库索引的原因三. B*树原创 2022-03-14 10:35:34 · 1248 阅读 · 0 评论 -
红黑树的插入和删除
一、红黑树的定义和插入操作1. 红黑树的五个性质2. 红黑树的插入操作二、红黑树的删除操作理论三、插入删除操作代码四、比较红黑树和AVL树原创 2022-01-03 10:00:46 · 1518 阅读 · 0 评论 -
AVL树基本操作
一、AVL树的节点平衡旋转二、AVL树插入删除代码实现原创 2021-12-29 21:25:51 · 220 阅读 · 0 评论 -
BST树面试常见问题
一、二叉树和BST树理论二、BST树插入删除查询操作1. 非递归插入操作2. 非递归删除操作3. 代码4. 递归插入查询和删除代码三、BST树前中后序遍历1. 前中后序遍历的递归方法2. 前中后序遍历的非递归实现四、BST树层次遍历1. 递归实现2. 非递归实现四、常见面试题1. BST树区间元素查找2. 判断一棵树是否是二叉搜索树3. BST树求子树问题4. 二叉搜索树最近公共祖先LCA5. 求镜像翻转6. 判断镜像对称7. 前序中序遍历重建二叉树8. 判断二叉树是原创 2021-12-28 10:44:30 · 721 阅读 · 0 评论 -
一致性哈希算法
3. 一致性哈希算法原创 2021-11-06 09:21:49 · 187 阅读 · 0 评论 -
大数据求topk问题
大数据topk问题1. 堆排序求topk2. 快排分割求topk原创 2021-11-02 19:45:22 · 538 阅读 · 0 评论 -
大数查重(哈希表&位图&Bloom Filter)
一、哈希表1. 哈希表理论知识2. 线性探测哈希表3. 链式哈希表4. 哈希表应用(1)找出第一个重复出现的数字(2)找出所有重复的数字(3)统计重复出现的数字以及出现的次数(4)一组数据有些数字是重复的,把重复的数字过滤掉,每个数字只出现一次(5)找出第一个没有重复出现的字符二、 位图算法三、 布隆过滤器Bloom Filter原创 2021-10-26 10:48:09 · 567 阅读 · 1 评论 -
搜索排序算法
一、二分搜索算法1. 非递归代码实现2. 递归代码实现二、八大排序算法1. 冒泡排序算法2. 选择排序算法3. 插入排序算法4.希尔排序算法5. 冒泡、选择、插入和希尔算法性能对比6. 快速排序算法7. 归并排序算法8. 堆排序算法(1)二叉堆&大根堆&小根堆(2) 堆的上浮和下沉调整(3)堆排序算法9. 快排&归并&堆排10. STL中的sort11. 基数排序(桶排序)原创 2021-10-23 15:16:44 · 1178 阅读 · 0 评论 -
线性表总结
一、数组数组介绍数组代码#include<iostream>#include<time.h>using namespace std;class Array{public: Array(int size = 10) :mCur(0),mCap(size) { mpArr = new int[mCap](); } ~Array() { delete[]mpArr; mpArr = nullptr; } //在末尾插入元素 O(1原创 2021-10-12 20:16:00 · 170 阅读 · 0 评论