- 博客(61)
- 收藏
- 关注
原创 【每日一题】LeetCode 114. 二叉树展开为链表 TypeScript
【代码】【每日一题】LeetCode 114. 二叉树展开为链表 TypeScript。
2026-07-06 14:21:53
10
原创 【每日一题】LeetCode 199. 二叉树的右视图 TypeScript
想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。2.队列:先进先出,把前面的都出队。3.把最右边的结果加入数组中。1.把每一层都存进队列中。
2026-07-05 10:50:45
192
原创 【每日一题】LeetCode 230. 二叉搜索树中第 K 小的元素 TypeScript
二叉搜索树:是指满足 左节点>根节点>右节点 的二叉树。可以通过中序遍历,给二叉树“排序”,按升序遍历二叉树。第k个小的元素就是,“升序遍历”的第k个位置的值。,请你设计一个算法查找其中第。给定一个二叉搜索树的根节点。从 1 开始计数)。
2026-07-04 15:26:04
219
原创 【每日一题】LeetCode 98. 验证二叉搜索树 TypeScript
根节点的值是 5 ,但是右子节点的值是 4。-Infinity:负无穷大。Infiniry:正无穷大。,判断其是否是一个有效的二叉搜索树。给你一个二叉树的根节点。
2026-07-03 10:51:04
213
原创 【每日一题】LeetCode 153. 寻找旋转排序数组中的最小值 TypeScript
它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。原数组为 [11,13,15,17] ,旋转 4 次得到输入数组。原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。的数组,预先按照升序排列,经由。你必须设计一个时间复杂度为。
2026-07-02 10:36:34
222
原创 【每日一题】LeetCode 33. 搜索旋转排序数组 TypeScript
首先来个错误版本:时间复杂度O(n),则返回它的下标,否则返回。你必须设计一个时间复杂度为。按升序排列,数组中的值。在预先未知的某个下标。上向左旋转后可能变为。
2026-07-01 19:32:06
185
原创 【每日一题】LeetCode 74. 搜索二维矩阵 TypeScript
行:中间值 / 列数 Math.floor向下取整。n x m矩阵数组 有 n x m个元素。2.计算中间值,找出矩阵的中间位置(left+right)/2。小了,左边界扩长至mid+1。左边界下标=0,右边界下标是所有元素-1。大了,右边界缩小至mid-1。列:中间值 % 列数。1.把二维数组“展开”成一维数组。3.根据位置找出所在行和列。4.比较中间值和目标值;给你一个满足下述两条属性的。核心思路:(二分查找法)
2026-06-30 17:54:29
247
原创 【每日一题】LeetCode 48. 旋转图像 TypeScript
旋转图像,这意味着你需要直接修改输入的二维矩阵。请你将图像顺时针旋转 90 度。解法一:先转置,后反转(执行用时1ms)解法二:先翻转,再转置(执行时长0ms)或手写反转函数reverse()使用另一个矩阵来旋转图像。
2026-06-29 14:01:38
206
原创 【每日一题】LeetCode 54. 螺旋矩阵 TypeScript
3.判断还有没有行:底部从右到左开始遍历;4.判断还有没有列:左侧从下到上开始遍历;1.顶部从左到右开始遍历;2.右侧从上到下开始遍历;,返回矩阵中的所有元素。
2026-06-28 16:24:05
172
原创 【每日一题】LeetCode 73. 矩阵置零 TypeScript
3.再次从第1行第1列开始遍历,如果所在行的第0列是0,就把对应行的所有列都置为0;存在所在列的第0行是0,就把对应列的所有行都置为0;2.从第1行第1列开始遍历每一项,如果===0,则把对应行的第0列置为0,把对应列的第0行置为0;第0行存在0,就把整个第0行都置为0;第0列存在0,就把整个第0列都置为0;4.最后根据标记,处理第0行和第0列。1.先标记第0行、第0列有没有0;,则将其所在行和列的所有元素都设为。的矩阵,如果一个元素为。
2026-06-27 14:21:41
209
原创 【每日一题】LeetCode 238. 除了自身以外数组的乘积 TypeScript
索引是1,它的乘积是左侧1,x 右侧3x4 (1X3x4)索引是2,它的乘积是左侧1x2,x 右侧4 (1x2X4)每一项的乘积(除了自身)等于左侧乘积 x 右侧乘积。之中任意元素的全部前缀元素和后缀的乘积都在。例如:[1,2,3,4]之外其余各元素的乘积。时间复杂度内完成此题。
2026-06-26 11:04:03
179
2
原创 【每日一题】LeetCode 189. 轮转数组 TypeScript
数组[1,2,3,4,5,6,7] k=10,轮转到7的时候就又是原来的数组了,实际再轮转3次。1.nums.splice(s):表示从数组的s索引(包含)开始删除剩下的元素并返回删除元素。为什么要取余数,因为轮转k的次数如果是数组的长度,则还是原来的数组,比如。②翻转前k-1的数据;4.[a,b]=[b,a]这个是快速替换a和b两个元素,等价于。3.k%=nl等价与k= k%nl。向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100],将数组中的元素向右轮转。
2026-06-25 14:21:40
166
原创 【每日一题】LeetCode 56. 合并区间 TypeScript
2.遍历比较,把结果数组的最后一项取出最后一位 与 原数组的第一位进行比较,大于等于即表示包含在原数组的数据范围,最后一项的最后一位取最大值。区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。区间 [1,4] 和 [4,7] 可被视为重叠区间。1.先排序,按数组的第一个数进行排序。否则原样添加到结果数据末尾。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。
2026-06-24 11:12:16
190
原创 【每日一题】LeetCode 438. 找到字符串中所有字母异位词 TypeScript
2.一个数组存放是模板子串,另一个是滑动的窗口,每移动一位就和模板子串做比较是否相等。1.建立两个数组,26的长度,索引分别对应26个字母,值对应的是每个字母出现的个数。起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。
2026-06-22 16:09:08
188
原创 【每日一题】LeetCode 128. 最长连续序列 TypeScript
②判断每一个数是不是连续列表的第一个数(判断有没有前一个数),是第一个数的话,当前的序列是1,一直找有没有+1的数,返回当前的序列长度;否则不是第一个数,跳过(因为会继续判断,一定有更小的数,从更小的数开始),找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。最长数字连续序列是 [1, 2, 3, 4]。new Set(nums)请你设计并实现时间复杂度为。给定一个未排序的整数数组。
2026-06-21 14:14:50
156
原创 【每日一题】LeetCode 49. 字母异位词分组 TypeScript
如何获得哈希表里的所有value,并以数组的形式返回 Array.from(map.values())或[...map.values()]如何把字符串分割排序后合并 str.split('').sort().join('')给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。②同样字母组合的字符串作为键,不同的str作为值;①把每个字符串分割、排序、合并成字符串;
2026-06-20 22:27:38
264
原创 【每日一题】LeetCode 3. 无重复字符的最长子串 TypeScript
所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。,请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 1。,所以其长度为 3。
2026-06-19 16:16:43
34
原创 【每日一题】LeetCode 169. 多数元素 TypeScript
for(const num in nums)遍历nums每一个索引,num输出字符型:"0"、"1"、"2"、"3"、"4"for(const per in person) 遍历nums的每一个键,per输出”name"、"age"for(const num of nums) 遍历nums每一个元素,num输出数字型:2,3,1,2,1。不推荐用for..in ..遍历数组,会遍历到数组的原型链上的属性。你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。
2026-06-18 10:28:02
236
原创 【每日一题】LeetCode 146. LRU 缓存 TypeScript
Map里有该key,保存原来的value值,删掉原来的key键值对,再重新set把键值对存进Map,这里是让Map给set重新记录顺序。这是用内置的数据结构Map实现的,核心在于.set()方法可以记住插入的顺序,可以获取最早插入的元素。// 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}// 缓存是 {1=1, 2=2}// 返回 -1 (未找到)// 返回 -1 (未找到)lRUCache.put(1, 1);
2026-06-16 15:00:42
245
原创 【每日一题】LeetCode 138. 随机链表的复制 TypeScript
因为如果走一步复制一步,random指向不确定,可能是未来节点、可能是过去节点,需要更复杂的处理。新节点就查【旧节点的next =链表里的其中一个节点】一一找到那个节点并指向它。有,指向 【旧节点的next =链表里的其中一个节点】指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。新节点的next也要指向链表的任一节点,和旧节点一样。旧节点的next指向链表的任一的节点。节点组成,其中每个新节点的值都设为其对应的原节点的值。,该指针可以指向链表中的任何节点或空节点。
2026-06-14 11:50:22
212
原创 【每日一题】LeetCode 24. 两两交换链表中的节点 TypeScript
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2026-06-13 11:47:41
174
原创 【每日一题】LeetCode 19. 删除链表的倒数第 N 个结点 TypeScript
给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。
2026-06-12 10:28:04
475
原创 【每日一题】LeetCode 142. 环形链表 II TypeScript
指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。链表中有一个环,其尾部连接到第一个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。返回索引为 1 的链表节点。返回索引为 0 的链表节点。给定一个链表的头节点。如果链表无环,则返回。,则在该链表中没有环。
2026-06-11 11:27:53
241
原创 【每日一题】LeetCode 53. 最大子数组和 TypeScript
这个为什么不用forEach,因为先初始化了nums[0],下标0不参与比较。forEach是从0开始遍历整个数组。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。
2026-06-10 12:08:04
239
原创 【每日一题】LeetCode 15. 三数之和 TypeScript
使重复的值相邻,可以更好地跳过:数组.sort((a,b)=>a-b) 从小到大,升序。如果用暴力解法,三层循环时间复杂度是O(n³),这个算法的目的就是降低时间复杂度+去重。②去重:如果下一个值和上一个值相同,直接跳过,i++/j++/z++不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。共勉,祝天下考生旗开得胜!,判断是否存在三元组。
2026-06-09 12:00:42
178
原创 【每日一题】LeetCode 11. 盛最多水的容器 TypeScript
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。核心思想是,从下标0开始遍历,计算0,1;0,3分别计算出面积,取最大值。最后,在我的不懈努力下,终于拿下~ (它有名字,双指针贪心算法)OK,Fine~还记得我之前说的力扣官方题解吗?首先给大家演示一下暴力解法(不推荐,超时)轴共同构成的容器可以容纳最多的水。共勉,祝愿各位高考考生旗开得胜!找出其中的两条线,使得它们与。返回容器可以储存的最大水量。当我掏出豆包时,恰逢高考。
2026-06-08 11:42:53
160
原创 【每日一题】LeetCode 2. 两数相加 TypeScript
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。
2026-06-07 10:51:21
198
原创 【每日一题】LeetCode 108. 将有序数组转换为二叉搜索树 TypeScript
1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。排列,请你将其转换为一棵 平衡 二叉搜索树。
2026-06-06 22:43:52
258
原创 【每日一题】LeetCode 118. 杨辉三角 TypeScript
中,每个数是它左上方和右上方的数的和。生成「杨辉三角」的前 numRows。给定一个非负整数 numRows。
2026-06-05 23:08:41
44
原创 【每日一题】LeetCode 70. 爬楼梯 TypeScript
豆包给的缺点:递归重复计算,性能很差,反复计算f(3)和f(2)先给大家演示一个错误写法,这个到了45就卡住了,超时。你有多少种不同的方法可以爬到楼顶呢?斐波那契数列:fn=f(n-2)+f(n-1)1. 1 阶 + 1 阶 + 1 阶。有两种方法可以爬到楼顶。1. 1 阶 + 1 阶。有三种方法可以爬到楼顶。2. 1 阶 + 2 阶。3. 2 阶 + 1 阶。
2026-06-04 22:24:50
168
原创 【每日一题】LeetCode 136. 只出现一次的数字 TypeScript
这道题相信大家都有自己的解法,或过滤或添加新数组,建议大家都用异或运算。,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
2026-06-03 22:58:31
154
原创 【每日一题】LeetCode 121. 买卖股票的最佳时机 TypeScript
在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。还有原因是n只能从第0项开始遍历,本题初始已经是第0项,不需要比较。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。因为n是字符串,得到的是“1”、“2”....设计一个算法来计算你所能获取的最大利润。在这种情况下, 没有交易完成, 所以最大利润为 0。
2026-06-02 22:22:28
187
原创 【每日一题】LeetCode 20. 有效的括号 TypeScript
5.Object.hasOwn(参数1,参数2) :返回boolean值,如果参数2的值在参数1的keys里面,返回true,否则返回false。3.映射关系,Record<K,T> TS定义类型的语法糖 (推荐写法,简洁)6. 数组.push(元素):往数组的末尾增加一位元素,返回数组的长度;数组.pop():从数组的末尾删除一位元素,返回被删除的元素。因为in会在对象、对象的父级/原型链找是否存在,标识key的类型是K,value的类型是T。const char of s这是新写法,学会拥抱新方法~
2026-06-02 00:44:33
163
原创 【每日一题】LeetCode 543. 二叉树的直径 TypeScript
3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。这条路径可能经过也可能不经过根节点。是指树中任意两个节点之间最长路径的。给你一棵二叉树的根节点,返回该树的。由它们之间边数表示。
2026-05-31 21:38:51
169
原创 【每日一题】LeetCode 104. 二叉树的最大深度TypeScript
rightDepth = maxDepth(root.right) //root.right是null。rightDepth = maxDepth(root.right) //root.right是null。leftDepth = maxDepth(root.left) //root.left是null。leftDepth = maxDepth(root.left) //root.left是null。rightDepth = maxDepth(root.right) //root.right是null。
2026-05-28 22:35:16
204
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅