自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法练习:707 设计链表(2022-09-23)

Leetcode 707 设计链表

2022-09-23 18:24:51 187 1

原创 2 两数相加(2021-03-14)

206. 两数相加来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers/给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.输

2022-09-23 11:27:44 288

原创 使用Node解析EML文件

通过的说,电子邮件导出后的文件格式就是.eml文件,比如使用outlook、163邮箱等等电子邮件程序将电子邮件导出后,就可以得到.eml文件,EML文件应该符合RFC 5322规范,这样EML文件就可以在不同的邮件客户端之间流通。也就是说,使用163邮箱客户端导出的eml文件,完全可以在Ooutlook中『基本一致』的打开之所以说基本一样,因为还是很多兼容性问题处理,而且很多邮箱客户端还有独有的私有协议内容,对应的样式在其他邮箱客户端只能以基本的样式进行展示以163邮箱为例,将邮件导出,就得到了。

2022-09-13 18:58:12 989

原创 JavaScript中循环依赖的处理

文章目录什么是循环依赖CommonJS中对循环依赖的处理ESM的处理Webpack对循环依赖的处理参考什么是循环依赖循环依赖一般会伴随模块化一起出现,就是在a模块中依赖b模块,而b模块又依赖a模块。在以前开发时就遇到过这种情况,在store初始化时使用了utils模块中的方法,而utils中有利用到了store中的数据在开发时没有问题,但是在打包后运行时就报错了,实际上就是遇到了循环依赖的问题。对于循环依赖,Node默认的CommonJS模块和ES6的模块以及Webpack打包时的处理各不相同C

2021-11-26 20:11:55 2847 4

原创 34 在排序数组中查找元素的第一个和最后一个位置(2021.08.05)

34. 在排序数组中查找元素的第一个和最后一个位置链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/题目描述见链接内容。解法1:暴力法逐个匹配数组元素,用一个标识符来标识第一个匹配的位置和最后一个匹配的位置:var searchRange = function (nums, target) { let result = [-1, -1], flag

2021-08-05 09:49:46 196

原创 33 搜索旋转排序数组(2021.08.03)

33. 搜索旋转排序数组链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array/题目描述见链接内容。解法1:二分查找有序数组可以使用二分查找的方法查找元素。这道题目本身不是有序的,但是当把数组从中间分成左右两个部分之后,一定有一个部分的数组是有序的例如[4, 5, 6, 7, 0, 1, 2],从6分开后数组就变成了[4, 5, 6]和[7, 0, 1, 2],前半分数组是有序的,所以这其实我们在常规二分查找的时候查

2021-08-03 09:31:48 149

原创 31 下一个排列(2021.07.29)

31. 下一个排列链接:https://leetcode-cn.com/problems/next-permutation/题目描述见链接内容。解法1:两边扫描嗯,Fail列表又+1首先要搞清楚什么是字典序在数学中,字典或词典顺序(也称为词汇顺序,字典顺序,字母顺序或词典顺序)是基于字母顺序排列的单词按字母顺序排列的方法。 这种泛化主要在于定义有序完全有序集合(通常称为字母表)的元素的序列(通常称为计算机科学中的单词)的总顺序。比如[1, 2, 3],按照字典序的所有排列依次为:[1

2021-07-29 09:55:42 106

原创 29 两数相除(2021.07.27)

29. 两数相除链接:https://leetcode-cn.com/problems/divide-two-integers/题目描述见链接内容。解法1:暴力法用暴力法解决,直接用被除数减去除数,每减一次,结果加1,要注意的是,这个题目里面,因为限定了除数和被除数的取值范围,所以结果越界的情况只需要在除数等于1或者-1时考虑就行如果在每次计算时都判断越界的话,暴力法会超时var divide = function (dividend, divisor) { const MIN = -M

2021-07-27 10:42:42 133

原创 208 实现Trie前缀树(2021.07.26)

208. 实现 Trie (前缀树)链接:https://leetcode-cn.com/problems/implement-trie-prefix-tree/题目描述见链接内容。前言那天在前端群里,看到了大神聊天时提高了Trie,他的原话是:我突然好恐慌,我不知道trie,天天就那个数组写filter和includes找东西赶紧下来查了一查Tri树,Trie树也叫字典树或者前缀树,是一种用于快速查询某个字符串、字符前缀是否存在的数据结构,其核心是使用『边』来代表有无字符,使用『点』来记

2021-07-26 11:36:35 106

原创 322 零钱兑换(2021-07-22)

322. 零钱兑换链接:https://leetcode-cn.com/problems/coin-change/感想看了半天题解,才理解。估计过一个月再来做,还是做不出来,我一定是个废物。解法1:动态规划(1)第一步:定义数组元素的含义用一个一维数组来表示当前构成i的面额,最小需要多少枚硬币(2)第二步:找出数组元素之间的关系式dp[i] = min(dp[i], dp[i - conis[j]] + 1)这个动态规划方程不太好想,当前dp[i],枚举的最后一枚硬币的面值是coin

2021-07-22 10:52:55 163 1

原创 24 两两交换链表中的节点(2021.07.21)

24. 两两交换链表中的节点链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/题目描述见链接内容。解法1:迭代一开始想用双指针解决,结果把两个指针一顿交换,发现交换了个寂寞,后来发现只利用一个指针cur,对cur.next和cur.next.next不断赋值就可以还利用之前的小技巧,声明了一个DummyNode,放在head前面,这样就不需要判断首节点的特殊性了var swapPairs = function (head) {

2021-07-21 11:58:16 138

原创 22 括号生成(2021-07-20)

22. 括号生成链接:https://leetcode-cn.com/problems/generate-parentheses/题目描述见链接内容。思考昨天做这道题,没思路,看了题解学习了写代码一直没休息,写到眼睛疼想吐图啥解法1:成对匹配把一对括号()看做一个从整体,当n === 1是,结果是[()],n === 2时,对[()]进行遍历,()有三个位置可以插入,插入的结果是()()、(())、()(),显然是有重复的结果,可以利用Set来去重:var generateParent

2021-07-20 09:49:08 312

原创 19 删除链表的倒数第 N 个结点(2021-07-15)

19. 删除链表的倒数第 N 个结点链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/题目描述见链接内容。解法1:两次遍历计算链表长度可以通过两次遍历来实现,第一次遍历计算出链表长度,这样就知道倒数第n个对应的正数是第几个了,然后在第二次遍历时,将对应的节点的『前驱节点』的next指向next.next问题是,当删除的是正数第一个节点时,由于第一个节点不存在『前驱节点』所以需要特殊处理var remove

2021-07-15 11:15:25 93 1

原创 15 三数之和(2021-07-09)

15. 三数之和链接:https://leetcode-cn.com/problems/3sum/题目描述见链接内容。解法1:三重循环+HasH去重想不到什么好的思路,于是就笨方法开干,用三种循环来进行比较,用一个HasH来保存已有的结果,用结果的前两个数字做key,够暴力var threeSum = function (nums) { const len = nums.length; if (len < 3) { return []; } const hash

2021-07-09 11:27:25 174

原创 剑指 Offer 22 链表中倒数第k个节点(2021-07-07)

剑指 Offer 22. 链表中倒数第k个节点链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/解法1:两次遍历为什么我的思路总是和别人不一样,总是先想到别扭的笨的方法呢。既然求倒数第k个,那么我先求出链表总共多长,然后就知道是整数第几个了,然后再用一个指针走到那里就行了var getKthFromEnd = function (head, k) { let cur = head

2021-07-07 18:26:04 100

原创 12 整数转罗马数字(2021-07-07)

11. 盛最多水的容器链接:https://leetcode-cn.com/problems/integer-to-roman/题目描述见链接内容。解法1:高级API利用了JS的很多高级API,思路就是先把数字按照个位、十位、百位、千位拆成一个数组,然后倒序,从个位开始,通过配置区分区情况,然后再重新组合起来var intToRoman = function (num) { const DICT = { 0: {1: 'I', 5: 'V', 10: 'X'}, 1: {1

2021-07-07 10:36:56 254

原创 292 Nim游戏(2021-07-06)

292. Nim 游戏链接:https://leetcode-cn.com/problems/nim-game/题目描述见链接内容。是看到了一道字节跳动的面试题目:假设有130个苹果,你我轮流拿,每次可拿1-5个,如何保证你拿到最后一个苹果;找到了LeetCode上的对应的一道题目,先来把这个想清楚,就知道上面的题目如何解决了。不过也得承认,我的智商确实不太够用。解法1:动态规划(1)第一步:定义数组元素的含义用一个一维数组来表示当前数量下是否可以赢得游戏,true的代表可以(2

2021-07-06 18:22:07 163

原创 11 盛最多水的容器(2021-07-06)

11. 盛最多水的容器链接:https://leetcode-cn.com/problems/container-with-most-water/题目描述见链接内容。解法1:暴力法二话不说,暴力开干。分别以每两个坐标作为起始点,画出矩形,比较大小:var maxArea = function (height) { const len = height.length; let result = 0; for (let i = 0; i < len; i++) { fo

2021-07-06 10:12:33 80

原创 6 Z字形变换(2021-07-05)

6. Z 字形变换链接:https://leetcode-cn.com/problems/zigzag-conversion/题目描述见链接内容。解法1:二维数组看了一阵子题目,才看明白,所谓的Z字形排列是一个放倒了的Z想到了用二维数组解决,把所有信息按照规律填入到二维数组中即可,具体的逻辑在代码注释中:var convert = function (s, numRows) { if (numRows === 1) { return s; } const temp =

2021-07-05 16:19:13 169 1

原创 算法基础06 KMP算法

文章目录题目KMP算法思路匹配过程KMP的原理构建`next`数组代码实现总结参考题目LeetCode的第28题,实现strStr(),实现字符串的匹配,实际上就是实现一个JS的indexOf函数const haystack = 'hello', needle = 'll';console.log(strStr(haystack, needle); // 2const haystack = 'aaaaa', needle = 'bba';console.log(strStr(haystack,

2021-06-30 10:05:47 193 1

原创 204 计数质数(2021.06.25)

160. 相交链表链接:https://leetcode-cn.com/problems/count-primes/题目描述见链接内容。解法1:暴力法二话不说,用暴力法解决这个问题,遍历n,对所有计数调用isPrime方法,isPrime中要注意的一个点是,结束循环的条件是x * x < n,不是n / 2,遍历到开方之前就可以完成所有的判断了var countPrimes = function (n) { let count = 0; for (let i = 2; i &lt

2021-06-25 11:12:41 146

原创 113 路径总和II(2021-06-24)

113. 路径总和II链接:https://leetcode-cn.com/problems/path-sum-ii/题目描述见链接内容。解法1:广度优先搜索在广度优先搜索时,重新构造了一个queue,原本的queue只用来存放未遍历的节点,现在queue的成员是一个对象,对象中包括了三个属性,node用来存放未遍历的节点,val存放遍历到当前节点前的历史路径求和,history保存当前节点前的历史路径var pathSum = function (root, targetSum) { l

2021-06-24 10:50:20 113

原创 5 最长回文串(2021-06-23)

5. 最长回文子串链接:https://leetcode-cn.com/problems/longest-palindromic-substring/题目描述见链接内容。解法1:动态规划(1)第一步:定义数组元素的含义dp[i][j]定义为从从i开始,到j结束的字符串是不是一个回文串,是的话填充true(2)第二步:找出数组元素之间的关系式如果一个子串是回文串,那么去掉首尾字符,剩下的子串也一定是回文串,那么就可以得到状态转义方程:dp[i][j] = dp[i + 1][j - 1]

2021-06-23 12:29:32 100

原创 169 多数元素(2021.06.10)

169. 多数元素链接:https://leetcode-cn.com/problems/majority-element/题目描述见链接内容。解法1:Hash法直觉的想到,可以利用一个额外的Map对象,在遍历数组过程中,存储每一项出现的次数,只要某一项的出现次数大元n.length / 2,返回它即可var majorityElement = function (nums) { const map = new Map(); const length = nums.length;

2021-06-10 14:48:40 120 2

原创 168. Excel表列名称(2021.06.09)

168. Excel表列名称链接:https://leetcode-cn.com/problems/excel-sheet-column-title/题目描述见链接内容。解法1:减一法这道题实质上就是进制转换的题目,将十进制转换为26进制,但是特别之处在,如果按照26进制转换,余数是0-25,而现在的转换余数是1-26,对应A-Z,现在需要消除这两个之间的差异解法1就是把被除数减一首先找到字符转换的基准,String.fromCharCode(65),对应字母A这个时候,如果n等于1,对2

2021-06-09 17:17:59 124 2

原创 155 两数之和 II - 输入有序数组(2021.06.07)

167. 两数之和 II - 输入有序数组链接:https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/题目描述见链接内容。解法1:哈希法与无序数组的解法相同,声明一个辅助的Map对象,key是target减去当前遍历的数组的值,valu是当前值的序号遍历数组的时候判断Map对象中是否存在当前值即可var twoSum = function(numbers, target) { const map = new

2021-06-07 21:22:05 120 1

原创 160. 相交链表(2021.06.04)

160. 相交链表链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/题目描述见链接内容。解法1:暴力法二话不说,用暴力法解决这个问题,先遍历headA,看headA的每一个节点,是否在headB存在,也就是说,每一个headA的节点,都要在headB中全部过一遍效率之低下就不用说了var getIntersectionNode = function(headA, headB) { let a =

2021-06-05 19:37:49 88 2

原创 48. 旋转图像(2021.06.04)

48. 旋转图像链接:https://leetcode-cn.com/problems/rotate-image/题目描述见链接内容。解法1:辅助数组既然让原地修改数组,但是我又想不出来如何直接修改,就像之前做的一道题目一样,直接声明一个新的数组,把调换后的数组按顺序推入新的数组中就行了然后需要找到替换的规律,脑子不够用,就用了3x3的矩阵,一个一个列,用归纳法,找到规律:temp[j][length - i - 1] = matrix[i][j]; // i是行,j是列然后把得到的te

2021-06-04 10:16:55 96

原创 155. 最小栈(2021.06.03)

155. 最小栈链接:https://leetcode-cn.com/problems/min-stack/题目描述见链接内容。解法1:辅助栈想到了用一个辅助栈来解决问题,但是总是想着入栈和出栈前把辅助栈排序,这样就总是没法在常数时间内完成getMin的操作要理解栈『先进后出』的特性,a入栈时,如果有栈中已经有了b、c和d,在a没出栈之前,b,c,d一定在栈中,也就是说,只要a在栈顶,那么栈中元素一定是a、b、c和d,也就说说,a在栈顶时,最小值一定是确定的我们把这个与a在栈顶对应的最小值放

2021-06-03 10:22:27 62

原创 141. 环形链表(2021-06-01)

141. 环形链表链接:https://leetcode-cn.com/problems/linked-list-cycle/题目描述见链接内容。解法1:标记链表首先想到的是,在遍历这个链表时,为每个节点添加一个属性visited,如果再次遍历到visited为true时,说明出现了环var hasCycle = function (head) { while (head) { if (head.visited) { return true; } hea

2021-06-01 21:32:04 84

原创 112. 路径总和(2021-05-26)

112. 路径总和链接:https://leetcode-cn.com/problems/path-sum/题目描述见链接内容。解法1:深度优先深度优先思路很快就做出来了,和昨天也又不一样,我的思路在向下递归寻找的同时,更新targetSum,判断当前是不是叶子节点,如果是的话再判断是不是和target相等var hasPathSum = function (root, targetSum) { return judge(root, targetSum);};function jud

2021-05-26 11:29:19 85

原创 111. 二叉树的最小深度(2021-05-25)

111. 二叉树的最小深度链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/题目描述见链接内容。要熟悉叶子节点这个概念,叶子节点指的就是没有子节点的节点解法1:广度优先搜索(BFS)我这个脑袋,就不太适合去考虑递归的问题,DFS一碰就完蛋,就这么简单的递归,我也总是出错,总是差一点。所以先从BFS下手,和之前求二叉树最大深度的方法基本是一样的,只是在内层循环时添加了一个判断出它是叶子节点就跳出的步骤var min

2021-05-25 15:11:12 118 1

原创 110. 平衡二叉树(2021-05-21)

110. 平衡二叉树来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/balanced-binary-tree/题目描述见链接内容。分析二叉树我总是搞不太明白,这道题又卡住了,没信心了需要用到递归的方式判断,因为一颗二叉树是平衡树,那它的子树也都是平衡树解法1:自顶向下前几天刚刚学习过,如果求一个二叉树的最大深度:function getHeight(node) { if (!node) { return 0; }

2021-05-21 10:08:09 76

原创 Vue3-10 Vuex

Vue3学习笔记-10 Vuex

2021-05-19 17:30:14 180

原创 Vue3-09 Vue Router

Vue3学习笔记-09 Vue Router

2021-05-19 17:29:18 886

原创 Vue3-08 无障碍

Vue3学习笔记-08 无障碍

2021-05-19 17:28:02 812

原创 Vue3-07 TypeScript支持

Vue3学习笔记-07 TypeScript支持

2021-05-19 17:26:48 351

原创 Vue3-06 深入响应式原理

Vue3学习笔记-06 深入响应式原理

2021-05-19 17:26:02 76

原创 Vue3-05 渲染函数

Vue3学习笔记-05 渲染函数

2021-05-19 17:24:46 1622 3

原创 Vue3-04 插槽

Vue3学习笔记-04 插槽

2021-05-19 17:23:43 437 6

空空如也

空空如也

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

TA关注的人

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