自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 收藏
  • 关注

原创 C语言:基础知识

在项⽬中就可以添加源⽂件和头⽂件。C语⾔把 .c 为后缀的⽂件称为源⽂件,把 .h 为后缀的⽂件称为头⽂件。C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键 字。• 关键字都有特殊的意义,是保留给C语⾔使⽤的• 程序员⾃⼰在创建标识符的时候是不能和关键字重复的• 关键字也是不能⾃⼰创建的。

2023-10-28 20:04:23 2849 103

原创 C++:深入理解多态

多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。

2024-05-20 17:17:48 1322 155

原创 DS高阶:LRU Cache

LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。

2024-05-18 00:17:26 962 138

原创 DS高阶:跳表

skiplist,顾名思义,首先它是一个list。实际上,它是在有序链表的基础上发展起来的。如果是一个有序的链表,查找数据的时间复杂度是O(N)。

2024-05-16 00:25:36 1107 124

原创 DS高阶:B树系列

B树系列的诞生本质上是为了解决外查找的问题

2024-05-13 20:36:40 2796 185

原创 C++:位图和布隆过滤器

位图和布隆过滤器可以帮助我们解决一些海量数据处理问题!!

2024-05-09 00:13:45 2153 136

原创 C++:哈希表和unordered系列容器的封装

在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同(哈希表)

2024-05-06 18:47:00 2075 136

原创 DS高阶:图论算法经典应用

重点介绍图论的经典算法!!!

2024-05-04 00:03:26 2058 117

原创 DS高阶:图论基础知识

图是比线性表和树更为复杂且抽象的结构,和以往所学结构不同的是图是一种表示型的结构,也就是说他更关注的是元素与元素之间的关系。

2024-05-01 00:51:11 1471 119

原创 C++:map和set的封装

利用红黑树模拟实现STL中的map和set!!!!

2024-04-29 11:17:29 1735 111

原创 DS进阶:并查集

在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-findset)。

2024-04-27 00:27:52 1204 127

原创 DS进阶:AVL树和红黑树

二叉搜索树(BST)虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。 而AVL树的平衡太过严格,导致维护效率很低,因此红黑树应运而生!!

2024-04-24 00:00:26 1906 138

原创 算法思想总结:栈

我们平时看到的 1+2*(3-4*5)+6/7 叫做中缀表达式,平时我们习惯用这个计算的原因是我们可以整体地去看到这个表达式并且清楚地知道各个运算符的优先级,但是计算机并不一定知道,因为他总是从前往后去遍历这个表达式。

2024-04-22 16:01:46 2372 103

原创 C++:map和set的使用

在STL中,总共实现了两种类型的关联性容器:树形结构与哈希结构,树型结构的关联式容器主要有四种:map、set、multimap、multiset。 这四种容器的共同点是:底层使用的是平衡搜索树(即红黑树)去实现的,容器中的元素是一个有序的序列。

2024-04-20 00:10:58 1846 125

原创 算法思想总结:链表

超级详细的链表做题总结!!本质的思想是模拟+画图,可以解决一切链表问题。

2024-04-17 09:10:44 1289 124

原创 二叉树经典OJ题(2)

1、二叉搜索树涉及到升序的情况,一般是根中序遍历建立联系2、前序和中序构建二叉树,以及中序和后序构建二叉树,本质上是利用一个序列找根,另一个序列去划分问题。同时我们会发现其实后序遍历如果反着来的话大多数情况下可以转化成类似前序遍历,比如4、5题和7、8题,都可以用前序遍历的思路去解决后序遍历。3、非递归实现二叉树的前中后序遍历,本质上是将问题拆分为1、访问左路节点 2、访问左路节点的右子树。需要用一个辅助栈去帮助我们记录节点。

2024-04-15 00:47:19 2236 128

原创 算法思想总结:分治思想

1,快速排序本身相当于一个前序遍历,最好的时间复杂度是NlogN 最差的时间复杂度是N^2 ,最坏的情况是出现在(1)以最左侧或最右侧为基准值的时候,凑巧又接近有序(2)大量重复元素。为了解决这个问题衍生出了优化思路:三组划分+随机取key。并且这种方式还可以解决top-k问题,并且时间复杂度是o(N)比堆排序还优秀,我们称之为快速选择算法。2,归并排序的本质就是将问题划分成无数个合并两个有序数组的子问题。是一个典型的后序遍历,时间复杂度是NlogN.我们发现他有一个特点就是:在归并之前,两个数组是有序

2024-04-13 00:20:33 1612 123

原创 DP:子数组模型

字符串dp问题技巧:如果需要设置虚拟节点,那么通过s=‘ ’+s可以帮助我们将下标的映射一一对应

2024-04-10 10:52:08 818 118

原创 DFS:记忆化搜索

当发现大量重复问题的时候,可以建立一个记忆数组记录结果,通过可变参数去映射并找到该结果,将时间复杂度变成线性!!

2024-04-08 19:48:52 1599 108

原创 DFS:floodfill算法解决矩阵联通块问题

floodfill,翻译为洪水灌溉,而floodfill算法本质上是为了解决在矩阵中性质相同的联通块问题。

2024-04-07 00:50:47 1447 106

原创 DFS:深搜+回溯+剪枝解决矩阵搜索问题

1、矩阵搜索问题经常要用到向量,也就是我们可以通过dx和dy来帮助我们定义方向2、矩阵搜索要确保走过的位置不再走过,所以此时有两个策略:(1)标记数组,比较常用(2)修改原矩阵的内容,但是这样做的话要我们要确保最后能够把它复原3、dfs的返回值不一定是void,如果该题目并不只是完全地去统计,而是涉及到我们做出的选择可能会错误的时候,这个时候我们就需要通过bool类型的返回值来帮助我们判断当前的填法是否正确。比如解数独和单词搜索问题

2024-04-05 01:05:46 1917 98

原创 DFS:深搜+回溯+剪枝解决组合问题

深搜+回溯+剪枝解决组合问题,其实和排列以及子集问题是一样的

2024-04-04 17:22:05 1253 57

原创 DFS:深搜+回溯+剪枝解决排列、子集问题

回溯有关的题关键就是画树状图,然后根据树状图去思考怎么进行深搜、回溯和剪枝!!

2024-04-02 22:47:13 1625 56

原创 DFS:二叉树的深搜与回溯

通过二叉树的深搜,来深入理解回溯与剪枝

2024-03-30 11:42:43 1272 98

原创 DFS:从递归去理解深度优先搜索

我们要把递归看成是一个黑盒,相信他能帮助我们完成任务!!

2024-03-28 14:31:29 1948 81

原创 DP:简单多状态模型

多状态dp表示第i天的时候可能的状态不同,所以我们要去区分不同的状态。

2024-03-26 23:10:42 1160 86

原创 算法思想总结:位运算

关于位运算的全部总结,看这篇就够了!!!

2024-03-24 14:47:51 1924 67

原创 DP:路径规划模型

路径规划主要是让目标对象在规定范围内的区域内找到一条从起点到终点的无碰撞安全路径。大多需要用二维dp数组去实现

2024-03-23 14:57:37 955 56

原创 DP:斐波那契数列模型

斐波那契数列用于一维探索的单峰函数之中,用于求解最优值的方法。其主要优势为,在第一次迭代的时候求解两个函数值,之后每次迭代只需求解一次。

2024-03-22 21:10:21 999 84

原创 算法思想总结:模拟算法

(1) 模拟算法流程,在草稿纸上进行演算(2) 认真审题,考虑细节问题和边界情况(3) 一步步将流程转化为代码

2024-03-21 15:11:23 1120 49

原创 算法思想总结:前缀和算法

前缀和思想,本质上是一个简单的dp问题

2024-03-18 21:20:58 1955 87

原创 算法思想总结:滑动窗口算法

当题目涉及到子串或者是子数组,都可以考虑到使用滑动窗口来进行解决

2024-03-17 18:43:21 2109 70

原创 DS进阶:二叉搜索树

本身树形结构用来存储数据相比顺序表和链表来说并不占有优势,他的最大优势就在于查找优势

2024-03-15 20:38:38 2234 51

原创 算法思想总结:二分查找算法

二分查找的策略基本上都是去找一个数,对应的有三种模版:正常的二分查找、左区间端点查找、右区间端点查找。

2024-03-14 10:24:12 1804 51

原创 算法思想总结:双指针算法

常见的双指针算法有三种形式:前后指针、对撞指针、快慢指针

2024-03-13 15:35:37 2743 48

原创 C++:继承与派生

继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2024-03-11 15:08:35 1184 50

原创 C++:模版进阶 | Priority_queue的模拟实现

模版就相当于是冰箱里的菜,全特化版本就相当于是即食菜,而偏特化就相当于是预制菜。重新写一个特定的仿函数就相当于是外卖 外卖>即食菜>预制菜>冰箱里的菜。

2024-03-09 00:02:04 3153 82

原创 C++:Stack和Queue的模拟实现

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。

2024-03-08 16:11:53 2436 58

原创 C++:List的使用和模拟实现

而earse必然会失效,因为该迭代器对应的节点被删除了。如果我们想继续用的话,就得利用返回值去更新迭代器,返回值是被删除元素的下一个位置的迭代器。

2024-03-08 15:02:28 2823 53

原创 C++:Vector的模拟实现

随着STL学习的深入我们会发现其实迭代器才是大佬

2024-03-05 01:02:04 2220 70

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除