- 博客(19)
- 收藏
- 关注
原创 前序和中序以及中序和后序遍历的结果构造二叉树
在不知道二叉树空指针位置的情况下,只要知道前、中、后序遍历中的两种,就可以用递归推出整颗树的结构。同时知道二叉树空指针位置,只要知道一种遍历就可以得到整颗树的结构。
2022-03-17 15:20:23
623
原创 二叉堆问题
二叉堆有两种,分别为大根堆和小根堆,在Java中一般使用优先级队列表示二叉堆,优先级队列是按照降序添加数据。本文使用二叉堆解决了数据流中位数和第k大数两个问题。
2022-03-10 09:39:07
1159
原创 一文解决差分数组
前文我们写过前缀和的技巧是非常常用的算法技巧,前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。本质上都是对数组进行预处理,使区间操作的复杂度为O(1)。当操作量庞大的时候,能够大大降低运行时间。
2022-03-03 20:40:36
386
原创 链表双指针
链表双指针常见的题目有合并k个有序链表、判断链表中是否有环、如果有环返回第一个入环结点、是否相交链表、链表的中间结点、K个一组翻转链表、删除排序链表中重复的元素、反转链表、回文链表等,其中最长考的就是反转链表(全部反转,部分翻转),又分为递归实现和迭代实现。
2022-02-22 14:45:40
529
原创 区间覆盖、相交问题
大家好呀!今天学习的是区间问题,区间分为三种情况,覆盖、相交和不相交。只要碰到区间之类的题,我们首先要做的是将区间起始位置按照升序排序,当起始位置相同时按照终止位置降序排序,然后针对不同情况得到不同的解决方案。本文给出leetcode上删除被覆盖区间和区间合并问题的解法。
2022-02-17 23:08:26
365
原创 数组双指针之滑动窗口
借助leetcode上,无重复字符的最长子串、最小覆盖子串、字符串排列、找到字符串中所有字母异位词、滑动窗口最大值几道题,总结了一套解决滑动窗口类题型的解题框架,以后碰到类似的题目再也不用怕啦。
2022-02-09 14:52:25
239
原创 数组双指针之二分搜索(三)
大家好呀,借助哎吃香蕉的珂珂和在D天内运送包裹的能力两道题讨论了一下泛型二分问题,总结了一个套路,一般有单调函数和求边界问题基本都是泛型二分问题,解题思路首先找自变量(所求),然后得到因变量,最后得到满足约束target的边界值。其中要注意递减函数与区间的收缩相反,起始区间可能需要满足一些条件。
2022-02-07 14:42:36
343
原创 数组双指针之二分搜索(二)
这几天通过刷关于二分搜索的题型的时候,我觉得可以大致分为两类,第一类是使用二分去处理字符串、数组数据结构,有些题可能需要进行分析才能使用二分下手,比如本文中的俄罗斯套娃和判断子序列。第二类是泛型二分(下一篇介绍),通过我总结的三步,可以轻松的解决这类问题。
2022-02-05 20:12:59
598
原创 数组双指针之二分搜索(一)
大家好呀,即使是过年也要抽出点时间刷算法题。二分法有常规的二分查找以及搜索左右边界,结合leetcode的上的经典题,统一了一种非常简单的框架,看过之后闭着眼睛都能写出来。
2022-02-02 18:48:58
1333
原创 算法的框架思维
大家好呀!从整体到细节再到整体的分治,自顶向下的递归,自底向上从抽象到具体的迭代等框架思维是通用的,不只是学习数据结构和算法,学习其他任何知识都是高效的。今天除夕提前祝大家新年快乐,不忘初心,做最好的自己。
2022-01-31 14:41:55
1422
原创 十大排序算法(三)
大家好呀,排序算法的最后一弹来了,包括计数排序、桶排序、基数排序的原理及其实现。大概花了三天的时间将十大排序算法从新学了一遍,已经能够做到独立写代码,我们一起努力加油。
2022-01-29 13:16:58
1034
原创 十大排序算法(二)
大家下午好呀,十大排序算法的第二节来了,堆排序和快速排序的思想是很重要的,大家一定要能够自己独立写出来(不要死记硬背哦)。至此,所有基于比较的排序算法以及算法的优略性已经介绍完了,还有一些非比较的算法在第三节给大家分享。
2022-01-28 14:37:03
796
原创 Markdown快捷键使用
## 常用快捷键突然开始使用Markdown主要是最近发现以前学习的知识老是容易忘记,去找学习过的资料又要花很长的时间。
2022-01-27 10:07:15
686
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人