摘要: 目录一、数据结构1. 链表2. 栈3. 队列4. 散列表5. 集合6. 树(1)二叉树(2)字典树(3)堆(4)霍夫曼树(最优二叉树)(5)红黑树7. 优先队列8. 并查集9. 其他:单调栈二、算法1. 排序(1)插入排序(2)快速排序(3)归并排序(4)堆排序2. 字符串(1)kmp(2)ac自动 阅读全文
posted @ 2023-05-28 18:06 linukey 阅读(15) 评论(0) 推荐(0) 编辑
摘要: [TOC] ## 排序 ## 逆序 [查询后矩阵的和](https://leetcode.cn/problems/sum-of-matrix-after-queries/) 阅读全文
posted @ 2023-06-04 13:03 linukey 阅读(6) 评论(0) 推荐(0) 编辑
摘要: **字符串原地修改经常遇到的一类题,双指针一个用于写入,一个用于扫描,互不干扰,各司其职。** **这类双指针可以模拟栈,很多情况下比真正的栈要更灵活好用。** 题目:[https://leetcode.cn/problems/reverse-words-in-a-string/](https:// 阅读全文
posted @ 2023-05-25 11:09 linukey 阅读(11) 评论(0) 推荐(0) 编辑
摘要: **我们在递归时,能通过递归传下去的东西,就不要随便使用全局变量,能通过递归收回来的东西,就不要随便使用全局变量。** [TOC] ##题目一:leetcode 1080. 根到叶路径上的不足节点 地址:[1080. 根到叶路径上的不足节点](https://leetcode.cn/problems 阅读全文
posted @ 2023-05-22 10:41 linukey 阅读(5) 评论(0) 推荐(0) 编辑
摘要: [toc] ##1. 全排列(去重) ``` void dfs(const vector& nums, int pos, vector>& result, vector& cur) { if (pos == nums.size()) { result.push_back(cur); return; 阅读全文
posted @ 2023-05-21 12:22 linukey 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 全排列去重的前提要求是目标集合必须是经过排序的。 在目标集合排序的前提下,第i位变换数字前后,如果是相同的数字,就会产生重复的排列。 注意:第i位变换的意思是i位本身的变换,而不是i与i-1的比较。 题目链接:[https://leetcode.cn/problems/permutations-ii 阅读全文
posted @ 2023-05-20 14:54 linukey 阅读(41) 评论(0) 推荐(0) 编辑
摘要: #### 二分查找的要点就是让目标区间不断缩小直至为一个点。 这同样是一些分治算法的目标,比如快速排序,我们的目标是区间缩小为一个点,如果你不能理解这个问题,那么通常会在剩余最后两三个数的时候混乱。 #### 避免死循环,mid的取整问题,向上or向下? 我们在二分查找的时候,要不断通过left r 阅读全文
posted @ 2023-05-20 14:35 linukey 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 题目链接:[https://leetcode.cn/problems/merge-k-sorted-lists/](https://leetcode.cn/problems/merge-k-sorted-lists/) 第一种写法,不断将未排序的链表插入到一个已经排序的链表中。 这样写的问题在于,当 阅读全文
posted @ 2023-05-20 14:00 linukey 阅读(4) 评论(0) 推荐(0) 编辑