自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 前序和中序以及中序和后序遍历的结果构造二叉树

在不知道二叉树空指针位置的情况下,只要知道前、中、后序遍历中的两种,就可以用递归推出整颗树的结构。同时知道二叉树空指针位置,只要知道一种遍历就可以得到整颗树的结构。

2022-03-17 15:20:23 623

原创 O(1)时间插入、删除和获取随机元素

怎样在O(1)时间内插入、删除和获取随机元素呢?

2022-03-16 14:10:16 1726

原创 LRU缓存算法

缓存算法是一种计算机的缓存满了要删除一些内容给新内容腾出位置的缓存淘汰算法,常见的有LFR和LFU算法。

2022-03-15 12:44:06 6775 1

原创 二叉堆问题

二叉堆有两种,分别为大根堆和小根堆,在Java中一般使用优先级队列表示二叉堆,优先级队列是按照降序添加数据。本文使用二叉堆解决了数据流中位数和第k大数两个问题。

2022-03-10 09:39:07 1159

原创 一文解决差分数组

前文我们写过前缀和的技巧是非常常用的算法技巧,前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。本质上都是对数组进行预处理,使区间操作的复杂度为O(1)。当操作量庞大的时候,能够大大降低运行时间。

2022-03-03 20:40:36 386

原创 前缀和问题

如果需要快速频繁的求一个数组索引区间内的元素和,可以使用前缀和数组对数组进行预处理,每一次区间和操作时间复杂度常数级别。

2022-03-01 22:24:59 283

原创 链表双指针

链表双指针常见的题目有合并k个有序链表、判断链表中是否有环、如果有环返回第一个入环结点、是否相交链表、链表的中间结点、K个一组翻转链表、删除排序链表中重复的元素、反转链表、回文链表等,其中最长考的就是反转链表(全部反转,部分翻转),又分为递归实现和迭代实现。

2022-02-22 14:45:40 529

原创 区间覆盖、相交问题

大家好呀!今天学习的是区间问题,区间分为三种情况,覆盖、相交和不相交。只要碰到区间之类的题,我们首先要做的是将区间起始位置按照升序排序,当起始位置相同时按照终止位置降序排序,然后针对不同情况得到不同的解决方案。本文给出leetcode上删除被覆盖区间和区间合并问题的解法。

2022-02-17 23:08:26 365

原创 数组双指针之快慢指针

使用快慢指针的方法解决了删除有序数组中的重复项、移除元素、移除0等问题。

2022-02-12 21:49:41 341

原创 多数之和问题(nSum)

使用递归算法解决n数和问题。

2022-02-10 17:20:53 1685 1

原创 数组双指针之滑动窗口

借助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

原创 十大排序算法(一)

十大排序算法包括了递归、分治、二分、双指针等常见的解题方法,想要提高算法能力,排序算法必须得精通,能够自己独立写出程序。

2022-01-27 10:27:40 909

原创 Markdown快捷键使用

## 常用快捷键突然开始使用Markdown主要是最近发现以前学习的知识老是容易忘记,去找学习过的资料又要花很长的时间。

2022-01-27 10:07:15 686

空空如也

空空如也

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

TA关注的人

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