自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2024春招美团前端

2. 然后对应奇数的值是0,因为奇数的平方得来的0和1 不可能相等,我们只看偶数,然后从 对应 下标 [i][i] 的位置开始看,我们算这块区域的 0 的个数是不是刚好等于 偶数平方的一半即可。1. 题目说的是0的数字会变成别的数字,因此我们先计算出本身数组的值,然后计算0的个数,0的个数乘以 l 就是最小值,乘以r就是最大值。1. 通过前缀和计算 0 的个数。

2026-04-19 00:04:33 56

原创 四数之和题解

3. 这里有几个剪枝 —— 因为我们是预先排序了,当 i 和 接下来连续的三个数字,加起来都比 target 大 其实说明没必要 去 进行遍历了 如果和 最后三个数字,加起来都小,也没必要去进行遍历,同理 j 也是这样的。1. 依旧利用左右指针的思想,我们先确定第一个下标 i ,然后 j 以 i+1 的坐标,去进行遍历 第二个下标 j ,所以 i 的取值范围是 0 n-3 j 的取值范围是 i+1 n-2。4. 然后就是要保证答案唯一,也就是说当我们遇到相同的元素要跳过。

2026-04-18 00:30:49 19

原创 电话号码的字母组合

2. 根据得到的返回数组,去进行拼接,但是 js 和 c 语言不一样,需要借助 .charCodeAt(0) 来获取到当前的 ASCII 码。3. 注意屏幕说的是 要 给的 最后长度的 结果,所以我们在遍历到 最后一位的时候,记录下来即可,如果不是就继续递归。1. 首先我们要先得到 “电话号码” 所对应的 返回数组。

2026-04-16 23:16:31 35

原创 最接近的三数之和

1. 利用两数之和的思想,题目提到答案只有唯一的一个,那么我们可以知道——遇到相等的直接返回,然后就是需要明确一点——会出现一样的元素,我们要保证这个元素唯一性。2. 确定要第一个数字,剩下俩个数字进行两数之和,也需要明确跳出重复元素,并且不断缩小范围。

2026-04-15 23:58:43 32

原创 正则表达式匹配

2. 于是匹配规则就有俩种情况 —— 出现 * 号了 我们对于当前字符串到底需不需要进行取舍,我们尽可能匹配最多,因此 当出现 p 字符串 前一个匹配规则是 * 号的时候,我们先预设 当前的 * 好已经匹配过前面一个字符了,然后去看 p 串前一个 为 * 号时 是否匹配 s[i] 或者说 s[i-1],如果匹配则取true。3. 没出现 * 号常规匹配。

2026-04-14 23:28:01 34

原创 罗马数字转整数

然后我们遍历这个字符串,因为题目链接提到有几个特殊情况,我们需要进行判断,但是需要注意的是,俩个组合用过之后,后面要清空 是要避免这样的情况 —— MCXI。根据代码思路来说,我们先定义一个函数通过字符串来获得对应的数字。

2026-04-14 22:18:57 36

原创 字符串转换整数

3. 再进行转换,转换的时候 因为我们用的是 js ,js 的 number 类型,取值范围是 -2^63,2^63-1 所以js不会存在数据溢出,因此我们判断一下就好了,如果超出,就赋值这个边界值就好了。1. 按照题目的来,先去掉 首部的空格。2. 再根据 符号进行判断。

2026-04-07 23:18:01 40

原创 蜗牛排序题解

2. 根据规律可知,我们除以 rowsCount 得到 列 的位置,根据这个 列 的位置 ,我们可以 看这个列 是 奇数还是 偶数 如果是偶数 代表 求余 rowsCount 的内容,是正序排序的,如果是奇数,则代表 是 逆序排序的(这是规律)3. 因此 我们除以 rowsCount 的值 作为列的下标,再根据 奇偶性质 得到 行的下标即可。1. 首先生成数组 js new Array 生成的是稀疏数组 会导致为 undefined。

2026-04-07 22:41:51 33

原创 嵌套数组生成器题解

基本语法就是 使用 function* 并且使用 yield 字段 yield 字段可以委托给 另外一个 generator 函数。首先要知道什么是 generator 函数,是 ES 6 引入的一种特殊函数,可以暂停执行和恢复执行。yield 字段代表 暂停 yield* 代表 委托。

2026-03-18 21:57:32 40

原创 分组-题解

该题是分组,我们仔细观察题目所述可以知道,其中的 key 其实是 在执行了 对应的 groupBy 函数后的 返回值(有下标,有执行后的值)所以 我们对应该 给出的 fn 遍历 原型对象上的 this 数组的 item,一个一个去执行 对应给的 fn。再去看fn 是否已经在 需要返回的 Object 里面即可。

2026-03-18 21:16:42 31

原创 记忆函数 II 题解

这里采取的 hash 是拿 map 的 size 进行记录到 idPool 这个map里面,表示参数是否已经记录过了。最后 我们给 传递进来的参数 hash 在 代码里面也就是 getId 一下,拼接对应的 id 成一个 字符串即可。=== 对于简单数据类型 —— 值相等 ,类型相等即可 对于复杂数据类型 —— 需要是指向同一个对象。题目所提到 === 相等才给出缓存的结果,那么我们用 hash 的想法,给每个参数记录下来。

2026-03-17 23:00:36 43

原创 扁平化数组题解

利用递归的 思想去写,建议定义一个 存放 结果的数组,在进行递归的时候进行push,而不是每次开辟新的空间去返回,不然会时间超限。

2026-03-17 00:23:28 31

原创 记忆函数题解

构建一个 map 存储调用结果,args 本身是一个数组,数组是复杂数据类型,每次调用,如果作为 map 的 key 去存储,会导致存储的key不一样,所以我们需要给他转换成 字符串类型,调用 数组的 toString 变成 字符串存储下来即可。

2026-03-16 21:21:10 32

原创 串联所有单词的子串

我们利用滑动窗口,让右边界不停地在 map 里面记录我们所需的数量,直到所记录的单词数量超出,我们进行收缩左边界,直到满足条件,记录下来,其中我们会遇到有不匹配的单词(直接 清除 滑动窗口即可,因为不满足这个条件,也不会满足 串联子串 的定义)因为题目提到需要满足的情况是串联子串,也就是说,某段字符串必须是同时出现所有的 word 数组,为了减少时间复杂度 —— 我们利用滑动串口 在右边边界移动 word 单个单词的 位置来进行尽可能的匹配。利用滑动窗口的思路去解决问题。

2026-03-16 20:59:24 39

原创 数据流的中位数

我们维护这俩个堆,大根堆可以比小根堆多一个,此时 数据是 奇数 中位数 是大根堆的堆顶,当大根堆和小根堆数据量一致时,代表此时数据是 偶数,返回 大根堆的堆顶 和 小根堆 的堆顶 俩个数字除以2 就是最后的内容。大根堆里面数据 其实就是 其中位数的 左边 的 —— 比中位数小的内容。小根堆里面数据 其实就是 其中位数的 右边 的 —— 比中位数大的内容。大根堆里面的内容 特征是 父节点的值 大于或者等于 其子节点的值。小根堆里面的内容 特征是 父节点的值 小于或者等于 其子节点的值。

2026-03-15 16:43:17 52

原创 重复的DNA序列

利用 map 和 set 的数据结构去解决问题,map里面存放 出现的所有的可能的结果,而 set 里面存放最终的答案 —— 保证答案唯一。遍历 字符串,查找 map 中是否已经包含 对应的 子串,如果已经出现了,则 往 set 里面存放,如果没有出现,则添加到 map 中。

2026-03-15 16:05:38 28

原创 有时间限制的Promise对象

利用 setTimeout 以及 promise 的使用,返回一个 promise ,里面先设定一个 setTimeout ,去执行 reject 的方法,其中 reject 里面可以填入参数 Time Limit Exceeded。然后调用 fn 的函数,异步函数都会带有 then 方法,我们只需要在 then 方法里面 调用 promise 的 resolve 方法即可,如果中途有错误,调用 reject 方法即可。

2026-03-14 21:44:34 52

原创 有时间限制的缓存

构建一个 map ,并利用 setTimeout 思想,到了对应的 duration 后 去删除对应 map 的 key 对应的值,我们存入 map 里面的值 包含 value 本身 和 setTimeout 返回的 一个数字。这里需要注意 我本身是采用 中括号形式去访问对象,但是leetcode 不能采用这种方式,大家老老实实采用 . 访问吧。

2026-03-14 21:29:06 84

原创 检查是否是类的对象实例

可以是 Object() 方法把传入的 简单数据类型包裹一下 变成Object 类型,然后就是特殊判断一下 传入的 第一个参数 不为 null 或者 undefined ,第二个必须为 是一个函数(此函数为构造函数)这道题应该使用 instanceof 去解决,但是我们知道 instanceof 只能判断 复杂数据类型,如果是简单数据类型会判断不了。

2026-03-14 00:22:03 32

原创 函数防抖题解

可以根据当前 timer 是否为 null 的值 ,知道当前是否已经有 setTimeout 在执行,如果存在 则,使用 clrearTimeout 取消,并重置 timer 的值,最后更新 timer 需要执行的代码。apply,是改变 this 指向,并执行 函数,args 是一个参数数组,所以这里使用了 fn.apply 方法来改变 this 指向并执行 fn。题目提到时间内再次调用需要取消上一次调用,我们从 setTimeout 里面可以知道,该函数返回一个number类型,并且会延迟执行。

2026-03-13 11:38:10 29

原创 计算右侧小于当前元素的个数 题解

先排序然后构建一个树状数组,从后往前开始计算遍历构建一个树状数组,根据当前的 nums[i] 缓存下标到 map 里面(没用二分查找是因为时间超限,使用这个是以空间换时间,事件复杂度从logn 到 1),最后输出倒序的结果即可。of 操作符:遍历可迭代对象的键值(数组,字符串,Map,Set 等,不能遍历普通对象,除非定义了 Symbol.iterotor)不会遍历原型链。in 操作符:遍历或者检查对象的键名,遍历的是可枚举属性名,不适合遍历数组,会遍历原型链上的属性。这个 1 右边的所有位都是 0。

2026-03-12 19:34:53 49

原创 缺失的第一个正数

然后 利用 set 这个容器,去记录 nums 所出现的值,当我们遍历 nums 这个数组时,我们判断 当前的值 是否与 res 相等,相等说明出现了,那么res++ , 在 res++ 的时候,我们也要再set里面一直查询 ,查询是否已经包含 res++ 的值。题目说找到缺失的第一个正整数,那么最小的正整数 是 1,我们先预设 答案是1。

2025-12-23 22:27:12 204

原创 最小覆盖子串

2. 我们需要维护 left 到 i 这块的 字符串,从中不断计算 迭代,如果 当前依旧满足,则 left 往左边缩进,直到不满足,我们继续贪心的往右边走,直到满足 覆盖 t 串的条件,然后继续 试探 left 的极限值在哪里。1. 采用贪心算法,我们用 i 表示 当前 s 串中走到的位置,left 到 i 表示满足 s 串中含有 t 串 的 距离。3. 用 map 这个容器来判断 是否 满足条件。

2025-12-23 00:11:01 211

原创 2025/12/19学习记录

开发环境中,我们通常需要强大的 source map 和 live reloading 或者 hmr ,而生产环境则需要,压缩 bundle 更轻量的 source map,资源优化,但是也会出现 生产环境和开发环境,重复配置,为了不重复配置,我们会有一个 webpack-merge 工具来 合并配置。可以通过 require.context() 函数实现自定义上下文,传入三个参数,要搜索的目录,是否还继续搜索子目录,匹配文件的正则表达式。它可以被放到函数调用之前,用来标记此函数调用是无副作用的。

2025-12-19 23:28:10 260

原创 滑动窗口最大值

2. 队列存储的内容是 下标,是在 nums 数组的下标,如果 当前 i 大于 这个队首,就pop对应的元素,pop 的元素代表不会成为 i 到 i+k 区间中最大的条件。1. 我们需要维护一个,队列,这个队列 q 在 i 到 i+k 这个区间内,保持一个有序的状态,最大的在队尾,进行一个队列的排列。3. 同时我们需要 ,不断的去判断队尾,是否已经不在 i-k 到 i 的区间了,如果不满足则 pop 出去。

2025-12-19 22:34:10 218

原创 2025/12/18 学习总结

在 webpack 命令行 环境配置的 --env 参数,可以运行传入任意数量得环境变量,在webpack 中,要使用 env 变量,必须将 module.exports 转换成一个函数 (可以理解为,这样才能把环境变量等参数传递进来)在启动 webpack 时,我们经常可以注意到 有 websocket 字眼,这是因为,webpack-dev-server 会在包中引入一个脚本,此脚本链接到 websocket 这样可以在任何文件修改时,触发重新加载应用程序。而非在配置中指定的原因。

2025-12-19 00:15:05 373

原创 最长有效括号

5.在出现 非成对 (()) 这种情况时,我们需要看对应的 i - dp[i-1] 的 值是什么,我们可以沿用,这个值 因为 dp[i-1] 表示的是 不包含当前 字符,前面的字符所出现的最大长度, i - dp[i-1] 就是找到最早的那个 下标是多少,并且需要满足是 ( 的情况。3. 因此我们知道,当 s[i] 出现 ) 时,就是我们需要去计算到最长有效字段的值,我们使用 dp [i] 表示 s[0] 到 s[i-1] 这个串 所出现的最大值。

2025-12-18 23:12:16 144

原创 2025/12/17总结

webpack 只知道处理 js 文件和 json 文件,所以在处理其他文件时,就需要用到 loader ,loader 可以帮助webpack处理其他类型的文件,因此遇到 jpg 文件时,我们可以在 module 下设置。npx nodejs 的包执行器 无需安装,直接运行,内置与 npm 中,npx 会智能执行流程 执行命令,并且临时安装执行,还可以指定版本执行,直接运行 github 代码 ,交互式命令选择。loader 的执行顺序是,从下到上,从右到左。

2025-12-17 23:31:04 296

原创 寻找两个正序数组的中位数

2. 用两路合并的思路去做,我们逐渐比较大小,并且计数,用pre 记录前面一个数字的值,res 代表当前的,最后去 判断 俩个数组相加起来是 双数还是单数,然后给出到答案。1. 中位数,如果是双数则需要 俩者相加 / 2 如果是单数则是中间那个。

2025-12-17 21:53:48 178

原创 复原IP地址

2. 接下来我们就只需要把 这三个点,模拟的放入到 这个字符串中,会生成四个数字,这四个数字都需要满足上面这个条件,在这三个点分布的时候,我们还需要考虑到,这个点和点之间的距离,不能超过3。1.首先读懂题目,ip 地址需要满足的条件是 没有前导0,并不超过 255。

2025-12-17 21:31:03 214

原创 最长公共子序列

text1[i-1] 和 text2[j-1] 不相等的情况那就是,需要比较,在 不取text1当前位置 i-1 的情况,以及 不取 text2 当前位置 j-1 的情况,俩个之中的最大值。2. dp[i][j] 会出现俩种情况,text1[i-1] 等于 text2[j-1] 或者不相等,首先我们看相等的情况,相等的话 dp[i][j] 应该是等于 dp[i-1][j-1]+1 等于在不包含本次相等情况的字符时,所得到的最大值 +1。

2025-12-16 22:20:48 228

原创 二叉树中的最大路径和

2. 我们需要遍历每个节点,产生负值的左子树或者右子树,就不需要考虑这个的价值了。遍历时 ,返回当前节点只取 左子树,或者右子树所产生的最大值 ,这样就可以在递归遍历的时候,看当前节点是不是 满足 以当前节点为 根 作为路径 是最大值即可。1. 首先题目的意思 路径和,是指能构成一条路径的 最大值,简单点来说,就是找打,一条以一个节点为 跟节点,左子树和右子树 都分别只取一侧构成一条 路径。

2025-12-14 23:06:41 248

原创 合并区间题解

2. 根据排序,我们结果数组 res ,pos 作为当前res结果数组已经存储了几个,对于 intervals 数组第一个元素,我们直接 push 进入 res ,从 第二个元素开始进行遍历,我们看当前元素是否 小于,当前res数组位置的 right,如果满足条件,则更新 res 数组对应下标 pos 的 right,否则就直接把 intervals 当前元素 push 到res作为新的区间。1. 解题第一步,先排序,排序是最先必须需要做的事情。

2025-12-10 23:29:58 246

原创 最长递增子序列

2. 我们采用 dp 算法,当前位置 dp[i] 的最优值(最大值),需要是遍历,i 位置前面的 其他元素,看是否 nums[i] 大于 nums[j] ,并拿到 j 位置的 最优值 dp[j] +1 作为 dp[i] 的值,这个值需要遍历前面的所有位置的最优解,不断迭代,拿到当前位置的最优解。1. 需要尤为注意的一点是 题目 所说的递增子序列,指的是 可以不连续的 子序列。

2025-12-09 00:46:10 148

原创 编辑距离题解

1. 使用动态规划请求,使用 dp[i][j] 来表示当前 word1 第 i 位置 和 word2 第 j 位置的最优解,由于计数是由从0计数,所以 dp[i][j] 表示的是 word1[i-1] 和 word2[j-1] 的位置。所以 dp 公式 为 min( dp[i-1][j] , dp[i][j-1] , dp[i-1][j-1] ) +1。+1 代表多做一次操作,dp[i-1][j] 代表 第一个情况,dp[i][j-1] 代表第二个情况。

2025-12-04 00:11:52 260

原创 合并K个升序链表题解

2. 对于这题,我们先首先记录,每个列表的第一个元素,维护这个数组,我们后续每次都从这个数组里面挑选最小值,来作为新链表的 下一个元素 ,如果当前下标的 数组被采用,则 往后走,链表往后走,无非就是先记录下一个的值,然后替换掉 我们维护的数组 当前位置的元素。4. 用一个循环来 不停找最小值,对于出现每一次null的情况,我们用count计数,出现一次null的情况,count--,代表这个链表已经走完,直到count为0,说明循环该结束了,返回答案即可。

2025-12-01 23:58:23 197

原创 螺旋数组题解

用 book 数组标记哪些是走过的,哪些没有走过,并且额外判断边界条件,然后针对于此,满足这些条件可以按照当前方位继续走,如果不满足,则先回到原来的位置,然后换个方位继续试探,直到试探到可行条件,需要注意结束条件——满足count计数等于 m*n 的条件 跳出循环。定义顺时针方法的数组:[[0, 1], [1, 0], [0, -1], [-1, 0]] 用一个 变量表示当前的方向,模拟螺旋方位行走。

2025-11-26 23:53:03 244

原创 二叉树的锯齿形层序遍历

1. 这道题目其实就是层序遍历,利用 flag 来决定顺序,我们每次遍历,都记住下一层所需要遍历的节点,记录下来作为下一次所需要迭代的数组对象。

2025-11-26 22:41:24 210

原创 el-upload 的那些坑

在我们使用 官方 给到的 ali-oss 库时,进度条是需要调用分片上传才能传回进度条// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。// 填写Bucket名称。});file.raw || file, // 兼容不同格式// 获取分片上传进度、断点和返回值。},

2025-11-26 09:42:42 317

原创 二叉树的最近公共祖先

1. 我们需要重视的问题是 —— 公共祖先有可能是 p 和 q 本身,我们把解题思路变简单点,在 dfs 时,判断 当前 节点是否 能满足是公共祖先的条件,需要满足四个条件。所以我们计数,需要 深搜到底,第一次出现为 2 的条件,必定是最近的,因为我们不断搜索,最先出来的一定是最近的。简单点来说 我们只需要满足这个节点 包含 p q ,也就是满足其中 2 个 条件就好了。

2025-11-25 23:24:45 226

空空如也

空空如也

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

TA关注的人

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