数据结构
文章平均质量分 93
OutlierLi
这个作者很懒,什么都没留下…
展开
-
数据结构:二叉树
代码随想录二叉树笔记原创 2024-09-22 18:48:55 · 1182 阅读 · 0 评论 -
数据结构:动态规划基础
动态规划,简称DP,如果某一个问题有很多重叠子问题,并且子问题和子问题之间有依赖关系,使用动态规划是最有效的;原创 2024-09-22 17:13:02 · 1173 阅读 · 0 评论 -
MyTinySTL项目学习笔记04
迭代器有多种类型,在之前的实现中,我们使用的迭代器类型包括:输入迭代器,输出迭代器,正向迭代器,双向迭代器,随机访问迭代器;可以看出,正向迭代器继承了输出迭代器,双向迭代器继承了正向迭代器,随机访问迭代器又继承了双向迭代器;operator[]原创 2024-09-22 19:01:43 · 662 阅读 · 0 评论 -
MyTinySTL项目学习笔记03
/ 自定义的哈希函数实现(注意有两个括号)intint// 传入PairHash这种形式的调用是函数调用运算符的使用,它调用了类型的默认构造函数来创建一个临时的对象,然后使用这个对象来调用operator()。这种写法有时被称为 “函数调用括号” 模式。另一种等价的写法是使用,它利用了 C++11 引入的列表初始化语法来创建临时对象;// 定义了 string, wstring, u16string, u32string 类型#endif //!原创 2024-09-22 19:00:58 · 883 阅读 · 0 评论 -
MyTinySTL项目学习笔记02
分配内存空间,使用new操作符,分配的空间大小为,返回一个指针;销毁对应的内存空间,调用delete函数;原创 2024-09-22 19:00:16 · 990 阅读 · 0 评论 -
MyTinySTL项目学习01——Vector实现
/ 所有类的定义都写在里面 }#ifdef max#pragmamessage// #define max # ifdef max # pragma message("#undefing marco max") # undef max // 取消已经定义的宏 # endif // max # ifdef min # pragma message("#undefing marco min") # undef min # endif // min#undef max // 取消已经定义的宏。原创 2024-09-22 18:58:59 · 1415 阅读 · 0 评论 -
一文讲明白ACM输入输出模式
ACM输入输出模式是指在竞赛编程(ACM/ICPC)中常用的一种输入输出方式,它与普通控制台的输入输出有所不同。原创 2024-09-22 18:57:31 · 654 阅读 · 0 评论 -
数据结构:数组和链表
/ 单链表int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数(没有的话编译器会给一个默认构造函数)// 初始化这个构造函数的写法是使用了C++的初始化列表(initializer list)。这种写法允许我们在构造函数中直接初始化成员变量,而不是在函数体内赋值。原创 2024-09-22 18:55:56 · 996 阅读 · 0 评论 -
数据结构:字符串
字符串类类型的题目,往往想法比较简单,但是实现起来并不容易,复杂的字符串题目非常考验对代码的掌控能力。字符串算法一般都要求是原地算法;双指针法是字符串处理的常客,KMP算法、数组扩容之后的处理,都使用了双指针法;KMP算法是字符串查找最重要的算法,如何求next数组,以及next数组的原理要清楚;同时KMP算法的思想要知道,用之前的经验来减少比较次数;原创 2024-09-22 18:54:58 · 712 阅读 · 0 评论 -
数据结构:栈和队列
C++中栈stack、队列queue、优先级队列都是容器适配器而不是容器,其底层结构可以选择不同的容器;容器适配器不存储元素,但是容器适配器提供了受限操作元素的接口,容器适配器的底层结构容器才存储元素。正因为如此,栈、队列、优先级队列中的元素未必是连续的,要看其底层容器选择了什么,如果底层容器选择了deque,则元素是不连续的;栈和队列都是受限访问的,而这一受限访问的原因在于底层容器是private的,而元素存储在底层容器中,只能通过栈和队列定义在public中的特定的成员函数进行操作;原创 2024-09-22 18:54:06 · 689 阅读 · 0 评论 -
数据结构:贪心算法
贪心法没有固定套路,在做题时,要有贪心的思想,如果不能用贪心做出了也正常,甚至用模拟做出来发现是贪心也正常;注意“两个维度权衡问题在分发糖果中,顺序遍历是一个维度,逆序遍历又是一个维度,然后最终结果取顺序遍历和逆序遍历的结果中较大值;在根据身高重建队列中,也又两个维度,分别是身高和排在前面的人的数量;先处理身高,将身高按顺序排序,然后遍历处理第二个维度;切莫瞻前顾后,既要还要,一次性处理多个维度,最后导致顾此失彼;确定一个维度的结果之后,再确定另一个维度;对于处理区间重叠、区间覆盖。原创 2024-09-22 18:53:21 · 1083 阅读 · 0 评论 -
数据结构:双指针法
在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环 完成了一个不断搜索区间的过程。滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。双指针法一直是一个强大的工具,目前应用:数组中,二分查找、链表、移除元素、串、数组扩容、KMP算法的next数组、滑动窗口(之前在数组中已经有过了解,是双指针的一种具体实现)暴力算法是最简单的思想,而双指针是暴力算法的改进,改进方向。双指针法不限于某一个具体的数据结构,是一种算法思想。原创 2024-09-22 18:51:54 · 287 阅读 · 0 评论 -
数据结构:回溯算法
代码随想录回溯算法笔记原创 2024-09-22 18:50:58 · 1039 阅读 · 0 评论 -
数据结构:哈希表
代码随想录哈希表笔记原创 2024-09-22 18:50:02 · 1156 阅读 · 0 评论