代码随想录
文章平均质量分 94
OutlierLi
这个作者很懒,什么都没留下…
展开
-
数据结构:二叉树
代码随想录二叉树笔记原创 2024-09-22 18:48:55 · 1182 阅读 · 0 评论 -
数据结构:动态规划基础
动态规划,简称DP,如果某一个问题有很多重叠子问题,并且子问题和子问题之间有依赖关系,使用动态规划是最有效的;原创 2024-09-22 17:13:02 · 1173 阅读 · 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 评论