- 博客(113)
- 收藏
- 关注
原创 JS左移运算符和右移运算符
(left + right) >> 1 等价于 Math.floor((left+right) /2)15的二进制是1111,向右移一位,变成了111,对应的十进制是7。9的二进制是1001,向右移一位,变成了100,对应的十进制是4。常见于二分查找法,用右移运算符性能更优。所以,等价于15 / 2向下取整。1<<2 输出4 (即 1 * 2^2)>>:JavaScript的按位右移运算符。001左移两位100,对应十进制4。>>1 :将二进制整体向右移一位。(约 21 亿),用。
2026-09-09 15:14:28
52
原创 【每日五题】Leetcode TypeScript
2.遍历数组,遇到小于基准点的,调换到左边;1.随机选取一个基准点pivot,放在数组最右边;3.分别递归遍历左侧和右侧。快速排序:(会超时)
2026-09-05 10:48:24
32
原创 【每日五题】leetcode TypeScript
2.如果num[i]>0,证明和>0,不符,直接结束循环。2.i从0开始,最后的索引是倒数第三个;.set(key,value),相同的key,新的值覆盖先前的value。.keys().next().value获取哈希表中键的最先插进去的键值。判断下一个是不是相同的值,相同跳过,最后z--,j++3.计算当前的和,>0,窗口向左移z--;<0,窗口右移j++.get(key)获取哈希表中key对应的value值。.has(key)判断,key在不在哈希表里。结果:null<-1<-2<-3<-4<-5。
2026-09-03 11:42:44
236
原创 【每日一题】LeetCode 33. 搜索旋转排序数组 TypeScript
如果左边界是升序,判断目标值是不是在这个范围内的值,是就是在左边界,否则右边界;2.从中间划分,分成[left,mid-1]和[mid+1,right]1.找中间值,比较中间值是否与目标值一致,如果是,运气真好!其中一定有一个是升序。,则返回它的下标,否则返回。你必须设计一个时间复杂度为。按升序排列,数组中的值。在预先未知的某个下标。上向左旋转后可能变为。
2026-08-19 22:16:58
225
原创 【每日一题】LeetCode 21. 合并两个有序链表 TypeScript
新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。
2026-08-19 21:42:40
178
原创 【每日一题】LeetCode 53. 最大子数组和 TypeScript
示例ccbbcc =>right=4时,left=1+1=2,但是下标1-3还是有重复字符,所以left需要是出现的所有重复字符的下标+1。因为 lastIndex.get(cur) +1是cur最后出现的下标,如果cur之后也出现重复字符,那么left和right之间可能有重复字符。而是 left = Math.max(left,lastIndex.get(cur)+1)如果该元素存在在哈希表中,就把左边界:重复下标+1。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 1。
2026-08-19 21:24:40
215
原创 【每日一题】LeetCode 165. 比较版本号 TypeScript
version1 的第二个修订号为 "2",version2 的第二个修订号为 "10":2 < 10,所以 version1 < version2。依次比较它们的修订号。如果其中一个版本字符串的修订号较少,则将缺失的修订号视为。version1 有更少的修订号,每个缺失的修订号按 "0" 处理。忽略前导零,"01" 和 "001" 都代表相同的整数 "1"。
2026-08-12 23:22:06
217
原创 【每日一题】LeetCode 53. 最大子数组和 TypeScript
请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。是数组中的一个连续部分。
2026-08-12 22:35:50
196
原创 【每日一题】LeetCode 1. 两数之和 TypeScript
因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。整数,并返回它们的数组下标。你可以按任意顺序返回答案。,请你在该数组中找出。来个暴力解法O(n²)
2026-08-12 22:21:21
219
原创 【每日一题】LeetCode 88. 合并两个有序数组 TypeScript
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。最终,合并后数组不应由函数返回,而是存储在数组。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。个元素表示应合并的元素,后。需要合并 [1] 和 []。中,使合并后的数组同样按。合并结果是 [1]。合并结果是 [1]。
2026-08-11 23:04:34
260
原创 【每日一题】LeetCode 3. 无重复字符的最长子串 TypeScript
所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。,请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 1。,所以其长度为 3。
2026-08-11 23:02:34
39
原创 【每日一题】LeetCode 739. 每日温度 TypeScript
天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。,表示每天的温度,返回一个数组。
2026-08-10 22:16:27
184
原创 【每日一题】LeetCode 25. K 个一组翻转链表 TypeScript
是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。
2026-08-09 16:37:46
185
原创 【每日一题】LeetCode 15. 三数之和 TypeScript
不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。
2026-08-09 16:36:13
229
原创 【每日一题】LeetCode 215. 数组中的第K个最大元素 TypeScript
k的值大于left.length + equal.length =>证明k在右边right[]数组里面。k的值小于等于left.length=>证明k在左边left[]数组里面。都不符合以上两种,就是equal[]里,取0下标就行。right[]:小于随机下标的数。equal[]:等于随机下标的数。left[]:大于随机下标的数。请注意,你需要找的是数组排序后的第。2.第k大,是从左往右第k大的元素。你必须设计并实现时间复杂度为。个最大的元素,而不是第。
2026-08-07 16:57:24
185
原创 【每日一题】LeetCode 146. LRU 缓存 TypeScript
/ 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}lRUCache.put(4, 4);// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}lRUCache.put(2, 2);// 缓存是 {1=1, 2=2}// 返回 -1 (未找到)lRUCache.get(1);// 返回 -1 (未找到)lRUCache.put(1, 1);// 缓存是 {1=1}lRUCache.get(1);请你设计并实现一个满足。的平均时间复杂度运行。
2026-08-07 13:55:08
189
原创 【每日一题】LeetCode 279. 完全平方数 TypeScript
是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。的完全平方数的最少数量。
2026-08-04 22:32:47
204
原创 【每日一题】LeetCode 3. 无重复字符的最长子串 TypeScript
2. 右指针 right 不断向右扩展,每次将新字符 s[right]加入窗口。- Map 存储每个字符的"最新索引",遇到重复时可以0(1)定位到重复位置,1. 维护一个窗口[left,right],保证窗口内所有字符都是不重复的。Map中最多存储字符集大小的条目,对于ASCII字符集上限为128/256。→将1eft 移动到该字符上次出现位置的下一个位置,从而消除重复。4. 每次移动后,更新当前窗口长度,并记录全局最大值。【空间复杂度】O(min(n,字符集大小)),请你找出其中不含有重复字符的。
2026-08-03 21:20:48
159
原创 【每日一题】LeetCode 198. 打家劫舍 TypeScript
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 2 + 9 + 1 = 12。偷窃到的最高金额 = 1 + 3 = 4。给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。
2026-08-03 20:19:06
247
原创 【每日一题】LeetCode 763. 划分字母区间 TypeScript
像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。划分结果为 "ababcbaca"、"defegde"、"hijhklij"。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是。返回一个表示每个字符串片段的长度的列表。每个字母最多出现在一个片段中。
2026-08-02 09:31:52
215
原创 【每日一题】LeetCode 45. 跳跃游戏 II TypeScript
从下标为 0 跳到下标为 1 的位置,跳。向后跳转的最大长度。换句话说,如果你在索引。测试用例保证可以到达。跳到最后一个位置的最小跳跃数是。步到达数组的最后一个位置。处,你可以跳转到任意。初始位置在下标 0。
2026-08-01 09:30:32
221
原创 【每日一题】LeetCode 55. 跳跃游戏 TypeScript
无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回。给你一个非负整数数组。
2026-07-31 20:16:46
210
原创 【每日一题】LeetCode 347. 前 K 个高频元素 TypeScript
2.桶:数组下标是每个数字出现的次数,值是数字(可以是多个数出现的次数是相同的);1.建哈希表:统计每个数字出现的次数 {1,3} 表示1出现了3次;3.往后遍历桶,把后k个加入列表中;,请你返回其中出现频率前。
2026-07-30 20:57:04
207
1
原创 【每日一题】LeetCode 208. 实现 Trie (前缀树) TypeScript
是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。// 返回 False。// 返回 True。// 返回 True。// 返回 True。(发音类似 "try")或者说。
2026-07-29 16:34:06
183
原创 【每日一题】LeetCode 207. 课程表 TypeScript
总共有 2 门课程。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。在选修某些课程之前需要一些先修课程。请你判断是否可能完成所有课程的学习?,表示如果要学习课程。
2026-07-28 10:28:29
236
原创 【每日一题】LeetCode 994. 腐烂的橘子 TypeScript
3.只要腐烂橘子队列有数据且还有新鲜橘子:把腐烂橘子周围(上下左右)都标记成烂橘子,推入队列中;左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。1.先找出腐烂橘子的坐标,加入队列中(数组);因为 0 分钟时已经没有新鲜橘子了,所以答案就是 0。2.记录新鲜橘子的数量;的新鲜橘子都会腐烂。
2026-07-27 15:12:00
198
原创 【复习】LeetCode 二叉树DFS TypeScript
DFS(Depth First Traversal),深度优先遍历。前序遍历:根节点-左节点-右节点。中序遍历:左节点-根节点-右节点。后序遍历:左节点-右节点-根节点。
2026-07-27 14:20:25
49
原创 【每日一题】LeetCode 215. 数组中的第K个最大元素 TypeScript
请注意,你需要找的是数组排序后的第。你必须设计并实现时间复杂度为。个最大的元素,而不是第。
2026-07-26 15:23:30
220
原创 【每日一题】LeetCode 739. 每日温度 TypeScript
天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。,表示每天的温度,返回一个数组。
2026-07-26 14:56:48
219
原创 【每日一题】LeetCode 394. 字符串解码 TypeScript
/ 输出: 49 (数字,因为 '1' 的 ASCII 码是 49)①sh >= '0' && sh <= '9' 这里判断的是sh的Unicode码点值,'0'是48,'1'是49。③sh.charCodeAt(0) - '0'.charCodeAt(0) 例如:sh=1, 49-48=1。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。字符会隐式转换成码点值,取值在'0'和'9'之间。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数。注意和charAt(0)的区别。
2026-07-24 15:43:27
196
原创 【每日一题】LeetCode 200. 岛屿数量 TypeScript
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。(水)组成的的二维网格,请你计算网格中岛屿的数量。发现一座"岛屿"就淹没:1=>0。此外,你可以假设该网格的四条边均被水包围。
2026-07-23 11:23:36
182
原创 【每日一题】LeetCode 155. 最小栈 TypeScript
-> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();操作,并能在常数时间内检索到最小元素的栈。栈顶元素:数组的最后一个数。
2026-07-22 10:31:41
240
原创 【每日一题】LeetCode 239. 滑动窗口最大值 TypeScript
的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。滑动窗口每次只向右移动一位。先来个超时版(错误示范)
2026-07-20 14:28:55
207
原创 【每日一题】LeetCode 42. 接雨水 TypeScript
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。
2026-07-19 23:28:24
165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅