- 博客(186)
- 问答 (3)
- 收藏
- 关注
原创 Promise难懂?一篇文章让你轻松驾驭
前端js学习中,让大家最难受的就是异步的问题,解决异步、回调地狱等问题时你必须得学会promise,对于多数前端程序员来说promise简直就是噩梦,本篇文章就是从通俗易懂的角度做为切入点,帮助大家轻松掌握promise。
2022-10-09 08:00:00
70314
163
原创 猿创征文|一名大三学生的前端学习之路(真情流露)
☀️不论是编程还是学习,更多的是希望大家能够持之以恒,不论你现在处于哪个阶段,你只要不放弃,认真去学,认真去钻研,相信你一定会得到自己想要的结果,在这里再送大家一句话:👉慢慢的变好才是给自己最好的礼物!👈...
2022-09-01 08:15:00
26261
184
原创 你必须要学会的js构造函数、原型、原型链
在做项目过程中,你可能想要添加多条数据,如果我们一条条的去添加未免有点麻烦,例如:我在这里要录入nba球员的数据,我如果采取这种形式,我只能一条条的去写,其中,name、age、positions属性我要一直去填写,我一想,nba里面有几百名球员,我要是一直这样录,我不得累死?这时,的便利便显示出来了!我们可以将name、age、positions作为构造函数的,代码示例如下:当我们创建构造函数后,我们便可以通过new关键字去调用了:我们能够发现这一种方式非常的方便,能够大幅度减少我们写重复代码,这
2022-07-09 18:46:33
1783
59
原创 力扣刷题:最低票价
例如,如果我们在第 2 天获得一张 为期 7 天 的通行证,那么我们可以连着旅行 7 天:第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。在第 1 天,你花了 costs[2] = $15 买了一张为期 30 天的通行证,它将在第 1, 2, …输入:days = [1,2,3,4,5,6,7,8,9,10,30,31], costs = [2,7,15]在第 1 天,你花了 costs[0] = $2 买了一张为期 1 天的通行证,它将在第 1 天生效。
2026-01-03 11:22:52
260
原创 力扣刷题:二叉树中的最大路径和
如果子树的和是负数,我们宁愿不选择这个子树,比如一个节点值是-10,左子树贡献-5,右子树贡献-3,最好的选择是都不要,返回0。在当前节点(需要拐弯的那个节点)的路径和 = 左子树的最长路径和 + 右子树的最长路径和 + 当前节点的值。解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。以当前节点为根节点的子树的最长路径和 + 当前节点的值。路径和 是路径中各节点值的总和。
2026-01-03 10:52:34
97
原创 力扣刷题:爬楼梯
解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶 3. 2 阶 + 1 阶。这道题是一个简单的动态规划问题,主要是定义好dp数组的含义,在这里,dp[i]代表爬i层楼梯,总共的方法数有dp[i]种。解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶 2. 2 阶。所以,可以总结出规律:dp[i] = dp[i-1] + dp[i-2]当你爬两层楼梯时,有两种方法。当你爬三层楼梯时,有三种方法。当你爬四层楼梯时,有五种方法。
2025-12-31 09:52:31
122
原创 力扣刷题:移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。当right遇到非零元素时,把right和 left 位置的元素交换。请注意 ,必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]1 所有非零元素都移动到了前面。2 非零元素的相对顺序保持不变。输入: nums = [0]3 所有的0都移动到了末尾。
2025-12-30 14:19:27
187
原创 力扣刷题:文件组合
待传输文件被切分成多个部分,按照原排列顺序,每部分文件编号均为一个 正整数(至少含有两个文件)。传输要求为:连续文件编号总和为接收方指定数字 target 的所有文件。解释:在上述示例中,存在两个连续正整数序列的和分别为 18,分别为 [3, 4, 5, 6] 和 [5, 6, 7]。这道题本质是寻找所有连续的正整数序列,这些序列的和等于给定的 target,序列长度至少为2。解释:在上述示例中,存在一个连续正整数序列的和为 12,为 [3, 4, 5]。输出:[[3,4,5,6],[5,6,7]]
2025-12-30 13:53:07
132
原创 力扣刷题:长按键入
如果 typed[j] === typed[j - 1](即 typed 的当前字符和前一个字符相同),说明这个字符是长按产生的,j 继续向前移动。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。结束时,i 必须遍历完整个 name,否则说明 typed 里缺少 name 的部分字符,返回 false。如果 name[i] === typed[j],说明当前字符匹配,i 和 j 都向前移动。
2025-12-30 13:23:20
253
原创 力扣刷题:Z字型变换
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。输入:s = “PAYPALISHIRING”, numRows = 3。输入:s = “PAYPALISHIRING”, numRows = 4。向右上移动:从第 numRows-1 行到第 0 行。向下移动:从第 0 行到第 numRows-1 行。输入:s = “A”, numRows = 1。输出:“PAHNAPLSIIGYIR”输出:“PINALSIGYAHRPI”核心思想:模拟 Z 字形遍历过程。
2025-12-29 10:32:06
211
原创 力扣刷题:第N位数字
首先设置当前位数以及在当前位数的时候有多少个数组,例如当前位数是1,那么此时就有9个数字(1-9),如果当前位数是2,此时就有90个数字(10-99),当n=11的时候,说明n>1*9,那么此时我们要找的第N位数字一定是落在10-99这个区间中的。给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …接下来是确定具体是哪个数字,
2025-12-29 10:08:48
161
原创 力扣刷题:数组中重复的数据
这道题的思想是原地哈希,因为题目中比较特殊,数组中每一个数的值是在[1,n]这个区间中,数组的长度也刚好为n,所以我们可以借助数组中某个数的前一个索引表示这个数是否出现过,如果没出现过,就将这个数减一作为下标对应的元素设置为负数。,变为负数,那么下次我们再次遇到4这个数的时候,我们去查看arr[4-1]对应的元素,如果对应的元素为负数,那么说明元素4之前出现过一次。输入:nums = [4,3,2,7,8,2,3,1]输入:nums = [1,1,2]输入:nums = [1]
2025-12-27 10:36:12
166
原创 力扣刷题:将数组分成和相等的三个部分
arr[i] == arr[i + 1] + arr[i + 2] + …解释:0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1。解释:3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4。输入:arr = [0,2,1,-6,6,-7,9,1,2,0,1]输入:arr = [0,2,1,-6,6,7,9,-1,2,0,1]输入:arr = [3,3,6,5,-2,2,5,1,-9,4]1 计算总和,检查是否能被3整除。
2025-12-27 10:03:58
116
原创 力扣刷题:三个数的最大乘积
nums[x] * nums[y] * nums[z](x < y < z,都是最大的)。给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。排序后,最小的两个数(可能是负数)和最大的一个数的乘积。因为负数相乘得到正数,再乘以最大正数可能很大。排序后,末尾三个数(最大的三个数)的乘积。输入:nums = [-1,-2,-3]输入:nums = [1,2,3,4]输入:nums = [1,2,3]取两种情况的最大值即可。
2025-12-27 09:52:04
119
原创 力扣刷题:路径总和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22。解释:由于树是空的,所以不存在根节点到叶子节点的路径。不存在 sum = 5 的根节点到叶子节点的路径。解释:等于目标和的根节点到叶节点路径如上图所示。叶子节点 是指没有子节点的节点。
2025-12-26 11:03:15
271
原创 力扣刷题:括号生成
输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。只有当已添加的右括号数量小于左括号数量时,才能添加右括号。:当左右括号都用了 n 个时,得到一个有效组合。只要左括号还有剩余,就可以添加左括号。
2025-12-26 10:26:18
134
原创 力扣刷题:矩阵重叠
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输入:rec1 = [0,0,1,1], rec2 = [1,0,2,1]输入:rec1 = [0,0,1,1], rec2 = [2,2,3,3]矩形1的左边缘在矩形2的右边缘的左边。矩形1的右边缘在矩形2的左边缘的右边。矩形1的下边缘在矩形2的上边缘的下边。矩形1的上边缘在矩形2的下边缘的上边。
2025-12-26 09:42:53
170
原创 力扣刷题:子集
子集问题本质上是组合问题的扩展,我们需要生成所有可能的组合。给你一个整数数组 nums ,数组中的元素 互不相同。返回该数组所有可能的子集(幂集)。输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。输入:nums = [1,2,3]这道题明显就是需要回溯算法解题。输入:nums = [0]输出:[[],[0]]
2025-12-25 11:49:43
183
原创 力扣刷题:有效的正方形
给定2D空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true。输入:p1 = [1,0], p2 = [-1,0], p3 = [0,1], p4 = [0,-1]输入: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1]输入:p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,12]点的坐标 pi 表示为 [xi, yi]。一个 有效的正方形 有四条等边和四个等角(90度角)。
2025-12-25 11:06:02
106
原创 力扣刷题:在排序数组中查找元素的第一个和最后一个位置
由于题目对时间复杂度的限制,在这里使用二分查找的思路更加的方便,这里与二分查找略微不同,需要设置一个index表示向左或者向右的边界情况,index代表了左右边界的索引。输入:nums = [5,7,7,8,8,10], target = 8。输入:nums = [5,7,7,8,8,10], target = 6。如果数组中不存在目标值 target,返回 [-1, -1]。输入:nums = [], target = 0。输出:[-1,-1]输出:[-1,-1]
2025-12-25 10:47:57
213
原创 力扣刷题:LCR 140. 训练计划 II
给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。一模一样,为非是这时候快指针只需移动cnt即可,因为不设计到删除元素,只是寻找元素。输入:head = [2,4,7,8], cnt = 1。
2025-12-24 15:23:45
176
原创 力扣刷题:删除链表的倒数第 N 个结点
快指针先行n步,这样快慢指针之间形成了一段长度为n的窗口,之后快慢指针同步向前相当于保持窗口长度不变。但是我们在删除一个节点的时候,会找到删除节点的上一个节点,这样才方便删除,所以快指针要先行n+1步,当快指针指向null的时候,慢指针刚好指向要删除节点的上一个节点。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。输入:head = [1,2,3,4,5], n = 2。输入:head = [1,2], n = 1。输入:head = [1], n = 1。输出:[1,2,3,5]
2025-12-24 15:18:49
206
原创 力扣刷题:岛屿的最大面积
输入:grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]计算并返回 grid 中最大的岛屿面积。
2025-12-24 14:54:29
142
原创 力扣刷题:二叉树的右视图
这道题的本质考察的还是二叉树的层序遍历,无非在这里略微有点变形,要把每层最后一个节点的值(这个节点就是从右边看每层的最后一个)保存到一个数组里,返回这个数组即可。给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。输入:root = [1,2,3,4,null,null,null,5]输入:root = [1,2,3,null,5,null,4]输入:root = [1,null,3]输出:[1,3,4,5]输出:[1,3,4]
2025-12-22 10:23:12
152
原创 力扣刷题:粉刷房子
当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。costs[1][2] 表示第 1 号房子粉刷成绿色的花费,以此类推。输入: costs = [[17,2,17],[16,16,5],[14,3,19]]解释: 将 0 号房子粉刷成蓝色,1 号房子粉刷成绿色,2 号房子粉刷成蓝色。输入: costs = [[7,6,2]]
2025-12-22 10:06:45
99
原创 力扣刷题:二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果 target 存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9。输入: nums = [-1,0,3,5,9,12], target = 2。这道题考察的就是个二分查找,主要是边界条件的处理,这里采用了左闭右闭得做法。解释: 9 出现在 nums 中并且下标为 4。解释: 2 不存在 nums 中因此返回 -1。
2025-12-22 09:41:41
99
原创 力扣刷题:千位分割数
给你一个整数 n,请你每隔三位添加点(即 “.” 符号)作为千位分隔符,并将结果以字符串格式返回。分组处理:每收集到3个字符或到达字符串开头时,将当前分组添加到结果中。数字转字符串:将整数 n 转换为字符串形式,方便逐字符处理。从右向左遍历:从字符串末尾开始向前遍历每个字符。输入:n = 123456789。输出:“123.456.789”添加分隔符:将各组用点号连接起来。输入:n = 1234。输入:n = 987。输出:“1.234”
2025-12-21 10:26:39
165
原创 力扣刷题:数组中的第k个最大元素
如果 k > left.length 且 k ≤ left.length + mid.length,说明第k大的元素就是基准值。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。如果 k ≤ left.length,说明第k大的元素在left中。输入: [3,2,3,1,2,4,5,5,6], k = 4。输入: [3,2,1,5,6,4], k = 2。否则,第k大的元素在right中。
2025-12-21 10:06:55
217
原创 力扣刷题:反转链表Ⅱ
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表。这道题跟反转链表1的思路是一样的,无非在这里需要设置一个虚拟的头部节点,方便重新连接的操作。输入:head = [1,2,3,4,5], left = 2, right = 4。输入:head = [5], left = 1, right = 1。输出:[1,4,3,2,5]
2025-12-21 09:26:07
149
原创 力扣刷题:字符串相乘
如果结果数组第一位是 0,跳过(除非结果就是 0)第一位是用来表示进位的,如果第一位是0,index就往后移一位,如果不是0,index就从0开始。给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。num1[i] 和 num2[j] 的乘积应该放在结果的 [i+j+1] 位置。输入: num1 = “123”, num2 = “456”输入: num1 = “2”, num2 = “3”如果任一乘数为 “0”,直接返回 “0”
2025-12-20 13:42:15
258
原创 力扣刷题:复原IP地址
给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。输出:[“1.0.10.23”,“1.0.102.3”,“10.1.0.23”,“10.10.2.3”,“101.0.2.3”]输入:s = “101023”
2025-12-20 12:49:25
263
原创 力扣刷题:反转二叉树
交换左右儿子,即更新 root.left 为 right,更新 root.right 为 left。递归调用 invertTree(root.right),获取到右子树翻转后的结果 right。递归调用 invertTree(root.left),获取到左子树翻转后的结果 left。给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]]输入:root = [2,1,3]输出:[2,3,1]
2025-12-19 11:48:28
133
原创 力扣刷题:回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。循环结束后,慢指针指向的是前半部分的最后一个节点(中心点)初始设置:慢指针指向头节点,快指针指向头节点的下一个节点。使用快慢指针法:慢指针每次走1步,快指针每次走2步。反转后半部分链表:将后半部分链表的节点顺序完全反转。同时遍历前半部分链表和反转后的后半部分链表。如果所有对应节点的值都相等,则链表是回文的。如果遇到不相等的节点,立即返回false。输入:head = [1,2,2,1]断开前后部分的连接,形成两个独立的链表。
2025-12-19 11:45:42
150
原创 力扣刷题:最长回文子串
这道题使用动态规划解决更加的方便,主要还是怎么去定义dp数组,在这里dp[i][j]表示字符串 s 中下标从 i 到 j 的子串 s[i…j] 是否为回文子串。给你一个字符串 s,找到 s 中最长的 回文 子串。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”
2025-12-19 11:42:03
136
原创 力扣刷题:最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。使用两个栈,一个做为主栈,一个作为辅助栈,辅助栈中每次存放的是主栈中入栈元素的最小值。--> 返回 -3.--> 返回 -2.void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。MinStack() 初始化堆栈对象。
2025-12-17 12:05:12
168
原创 ⭐力扣刷题:最长递增子序列
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。本道题需要使用动态规划来解决,主要重点是定义好dp数组的意义,在这里。解释:最长递增子序列是 [2,3,7,101],因此长度为 4。输入:nums = [10,9,2,5,3,7,101,18]输入:nums = [7,7,7,7,7,7,7]输入:nums = [0,1,0,3,2,3]
2025-12-17 11:45:31
95
原创 力扣刷题:两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。你可以按任意顺序返回答案。
2025-12-17 10:32:24
160
原创 ⭐力扣刷题:三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!这道题使用双指针法会非常的方便,首先要将数组进行排序,随后开启for循环,i从0的位置开始,设置左指针指向i+1,设置右指针指向数组最后一个元素,然后计算a+b+c的值,如果这三个和的值小于0,那么左指针往右移动,如果三个数之和大于0,右指针往左移动。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输出:[[-1,-1,2],[-1,0,1]]输出:[[0,0,0]]
2025-12-16 13:57:29
230
原创 力扣刷题:另一棵树的子树
否则,返回 false。输入:root = [3,4,5,1,2,null,null,null,null,0], subRoot = [4,1,2]二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。从根节点开始,判断整个树是否和 subRoot 相同,不相同则递归左右子树,是否和 subRoot 相同。递归遍历 root 树的每个节点,看看:以当前节点为 root 的子树,是否和 t 树相同。输入:root = [3,4,5,1,2], subRoot = [4,1,2]
2025-12-16 11:27:55
248
原创 ⭐力扣刷题:字符串解码
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。这道题的本质在于使用两个栈来模拟递归的过程,遇到左括号时保存当前状态,遇到右括号时恢复状态并计算。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。每次进入新的括号层级时,把外层状态存入栈中,自己从空白开始。给定一个经过编码的字符串,返回它解码后的字符串。
2025-12-16 11:05:05
136
前端领域使用基础的html、css、js构建一个宣传新农村的网页设计资源
2023-01-01
操作系统中文件目录与目录文件通俗易懂的理解是啥啊
2023-09-28
webstorm中显示黄色警告问题
2022-03-20
vue3不使用表格怎么实现分页功能
2022-01-29
vue3在使用markdown时报错,求解决
2022-02-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅