自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣hot100:树:108.将有序数组转换为二叉搜索树

1

2025-06-22 16:06:51 511

原创 力扣hot100:二叉树

核心思路:递归,递归每个节点左右子树的深度,然后更新最长路径,也就是左右子树深度之和。关于递归用文字很难描述清楚,建议每次做的时候都用笔模拟一次,这样思路更清晰。简单说一下,就是不断向左遍历到最后一个节点,然后更新max(最长路径值),返回当前节点左子树或者右子树的高度,注意是子树!

2025-06-22 11:02:55 127

原创 力扣hot100:链表:148.排序链表

核心思路:利用递归分别处理左右两边链表,也就是递归排序。第一步是找到中点,如何利用快慢指针找到中点(掌握),接着断开链表,也就是分左右两边进行遍历,最后一层一层排序返回。1. 分:不断把序列分成左右两半,直到每部分只剩一个元素。2. 治:把左右两个有序数组“合并”为一个有序数组。递归排序:递归排序是一种。

2025-06-21 14:26:18 113

原创 力扣hot100:链表:138.随机链表复制

题目大致意思就是这个链表有两个指针:next和random,next指针指向下一个节点,random指针指向链表随机一个节点,而我需要复制这个链表,使得next指针指向原来的节点,random也指向原来的节点。因为我在添加进map的时候已经创建了节点,这个节点是包含next指针和random指针的,所以可以直接操作,不需要额外对指针进行保存。核心思路:先用hashMap保存原节点到新节点的映射,然后在对next和random进行操作。

2025-06-21 09:44:12 189

原创 力扣hot100:链表:24.两两交换链表中的节点

交换完节点之后,将cur更新为firstNode(此时的firstNode以已经被交换所以可以看作是secondNode), 然后继续下一组的遍历,所以可以看出交换一组所需要的条件就是需要有一个节点在firstNode的前面,方便记录节点位置。题目中说了,两两交换,那么初步思路就是我们可以以两个节点为一个单位去进行交换处理,那么怎么做到两两交换呢?核心思路:设置一个虚拟节点,方便后期返回头结点。cur = dummy(虚拟节点)

2025-06-20 22:06:17 216

原创 力扣hot100:链表:2.两数相加

对于这个题目解释:拿第一个链表的第一个数字举例,2是链表头,说明2是最开始存入链表的,也就代表了个位(342),所以为什么是倒着读而不是正着读。这是我们正常计算:那我们就要考虑两个问题了,就是进位(红色框框),以及如果单列计算超过10的我们只保留个位。因此我们需要新增一个变量carry来保存进位的数字,以我在下一列计算的时候带上这个carry变量。核心思路:342 + 465 = 807。更新当前位值和新进位。,别忘记加一个节点!

2025-06-20 21:31:37 207

原创 力扣hot100:链表:21.合并两个链表

核心思路:引入dummyhead,也就是一个虚拟节点,便于记录头结点。当两个list都不为空才进入循环,开始对比两个list的元素,小的放入新的list,循环结束后注意判断剩余情况。一开始想到如果有一个list为空的情况,所以会想到用if判断三种情况,但其实这一步可以直接放到最后一步做,用三位运算,而主体逻辑的条件就是两个list都不为空。

2025-06-19 13:52:39 218

原创 力扣hot100:链表:142.环形链表II

依旧是双指针,步骤于环形链表相同,但在相遇之后,需要设立一个指针从头开始,与相遇点的指针同步向前遍历,最后相遇的点就是环的起点。而因为fast指针每次走的距离是slow指针的两倍,所以可得:a + b + n * c = 2(a + b)也就是说从起点走a步到入环点,而从相遇点走c - b步就能到,所以当再次相遇的时候,这个点就是入环点。那么fast指针到相遇点所走的距离就是:a + b + n * c。那么slow指针到相遇点所走的距离就是:a + b。到入环点(D)的距离),这里的n一般来说就是1。

2025-06-19 13:16:20 278

原创 Redis: 黑马点评笔记

redis黑马点评项目详解

2025-06-18 22:32:47 2542

原创 力扣hot100:链表:141.环形链表

核心思路:双指针,慢指针走一步,快指针走两步,终会相遇,不然就返回错误,可以手动模拟。

2025-06-18 20:58:32 119

原创 力扣hot100:链表:234.回文链表

111

2025-06-18 20:42:13 192

原创 力扣hot100:链表:160.相交链表

1

2025-06-18 20:32:33 174

原创 力扣hot100:数组:238.除自身以外数组的乘积

1

2025-06-16 17:50:40 127

原创 力扣hot100:数组:189.轮转数组

核心思路:将每个位置向右移动k个位置,遇到最后一个数字怎么办?利用公式:(i + k) % len即可完成。题目没有要求我们空间复杂度,因此可以用新数组接收,最后在将原数组覆盖。

2025-06-16 16:35:40 159

原创 力扣hot100: 矩阵:240.搜索二维矩阵II

1

2025-06-16 15:21:09 115

原创 力扣hot100:矩阵:48.旋转图像

4

2025-06-16 14:33:04 226

原创 力扣hot100:矩阵:54.螺旋矩阵

1

2025-06-16 12:30:22 447

原创 力扣hot100:矩阵:73.矩阵置零

1

2025-06-15 21:47:03 185

原创 力扣hot100:数组:56.合并区间

1

2025-06-14 22:20:58 102

原创 力扣hot100:数组:53.最大子数组和

以当前元素结尾的最大子数组和。:遍历过程中遇到的最大子数组和。

2025-06-13 22:13:14 150

原创 力扣hot100:子串:560.和为k的子数组

而本题目要求我们在一个数组里找到是否有和为k的子数组,那么这个k不就等于上面这个公式吗,也就是前缀和,将公式变形,preSum[j] - k = preSum[i - 1],也就是说我们只需要找到HashMap中是否存在preSum[j] - k ,如果有就相当于这个前缀和的式子是成立的,说明有子数组和为k,但不需要去纠结是否那个和为k的区间在哪。注意:需要提前将前缀和为0 put进HashMap,方便计算,因为假如你此时的preSum就是k,那么preSum - k = 0,此时也是满足条件的。

2025-06-12 10:21:06 154

原创 力扣hot100:滑动窗口:438.找到字符串中所有字母异位词

首先将子串内的字母出现频率记录,然后开始从头遍历字符串,向右边添加元素一直到滑动窗口的长度,并且比较滑动窗口内字母出现频率是否与子串字母出现频率相同,相同则计算滑动窗口起始下标。时间复杂度为O(n),仅仅遍历了一遍数组。核心思路:利用滑动窗口内字母出现频率与子串相比较,如果一样则返回窗口起始下标。1、 固定长度滑动窗口(如:查找所有长度为 k 的子串)2、动态大小滑动窗口(如:最小覆盖子串)处理窗口中的数据并判断。右指针不断向右扩展窗口。左指针根据条件收缩窗口。每次向右滑动一个字符。直到满足或不满足条件。

2025-06-10 14:52:45 133

原创 力扣hot100:双指针:283.移动零

当遍历到的数字不等于0时,就添加到慢指针下标的新数组中(这个新数组其实就是原来的数组,并没有初始化新的数组,只是更新下标对应的值)。用一个变量单独计算数组中0的数量,用while循环将0添加到数组末尾。慢指针记录新数组下标,快指针遍历数组。

2025-06-09 23:42:49 205

原创 力扣hot100:字符串:128.最长连续序列

注意题目要求,时间复杂度为O(n)

2025-06-08 10:47:24 150

原创 力扣hot100:字符串:49. 字母异位词分组

什么意思(函数式编程)1、Arrays.sort()只能用于字符数组,因此如果是String类型需要转成char[].,这样就统计了字母异位字符串。,将每个字符串按照字母。

2025-06-07 19:51:13 201

空空如也

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

TA关注的人

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