- 博客(166)
- 问答 (3)
- 收藏
- 关注
原创 Promise难懂?一篇文章让你轻松驾驭
前端js学习中,让大家最难受的就是异步的问题,解决异步、回调地狱等问题时你必须得学会promise,对于多数前端程序员来说promise简直就是噩梦,本篇文章就是从通俗易懂的角度做为切入点,帮助大家轻松掌握promise。
2022-10-09 08:00:00
70294
163
原创 猿创征文|一名大三学生的前端学习之路(真情流露)
☀️不论是编程还是学习,更多的是希望大家能够持之以恒,不论你现在处于哪个阶段,你只要不放弃,认真去学,认真去钻研,相信你一定会得到自己想要的结果,在这里再送大家一句话:👉慢慢的变好才是给自己最好的礼物!👈...
2022-09-01 08:15:00
26259
184
原创 你必须要学会的js构造函数、原型、原型链
在做项目过程中,你可能想要添加多条数据,如果我们一条条的去添加未免有点麻烦,例如:我在这里要录入nba球员的数据,我如果采取这种形式,我只能一条条的去写,其中,name、age、positions属性我要一直去填写,我一想,nba里面有几百名球员,我要是一直这样录,我不得累死?这时,的便利便显示出来了!我们可以将name、age、positions作为构造函数的,代码示例如下:当我们创建构造函数后,我们便可以通过new关键字去调用了:我们能够发现这一种方式非常的方便,能够大幅度减少我们写重复代码,这
2022-07-09 18:46:33
1783
59
原创 力扣刷题:二叉树的右视图
这道题的本质考察的还是二叉树的层序遍历,无非在这里略微有点变形,要把每层最后一个节点的值(这个节点就是从右边看每层的最后一个)保存到一个数组里,返回这个数组即可。给定一个二叉树的 根节点 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
125
原创 力扣刷题:粉刷房子
当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。假如有一排房子,共 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
65
原创 力扣刷题:二分查找
给定一个 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
70
原创 力扣刷题:千位分割数
给你一个整数 n,请你每隔三位添加点(即 “.” 符号)作为千位分隔符,并将结果以字符串格式返回。分组处理:每收集到3个字符或到达字符串开头时,将当前分组添加到结果中。数字转字符串:将整数 n 转换为字符串形式,方便逐字符处理。从右向左遍历:从字符串末尾开始向前遍历每个字符。输入:n = 123456789。输出:“123.456.789”添加分隔符:将各组用点号连接起来。输入:n = 1234。输入:n = 987。输出:“1.234”
2025-12-21 10:26:39
161
原创 力扣刷题:数组中的第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
211
原创 力扣刷题:反转链表Ⅱ
给你单链表的头指针 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
146
原创 力扣刷题:字符串相乘
如果结果数组第一位是 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
251
原创 力扣刷题:复原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
257
原创 力扣刷题:反转二叉树
交换左右儿子,即更新 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
130
原创 力扣刷题:回文链表
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。循环结束后,慢指针指向的是前半部分的最后一个节点(中心点)初始设置:慢指针指向头节点,快指针指向头节点的下一个节点。使用快慢指针法:慢指针每次走1步,快指针每次走2步。反转后半部分链表:将后半部分链表的节点顺序完全反转。同时遍历前半部分链表和反转后的后半部分链表。如果所有对应节点的值都相等,则链表是回文的。如果遇到不相等的节点,立即返回false。输入:head = [1,2,2,1]断开前后部分的连接,形成两个独立的链表。
2025-12-19 11:45:42
146
原创 力扣刷题:最长回文子串
这道题使用动态规划解决更加的方便,主要还是怎么去定义dp数组,在这里dp[i][j]表示字符串 s 中下标从 i 到 j 的子串 s[i…j] 是否为回文子串。给你一个字符串 s,找到 s 中最长的 回文 子串。解释:“aba” 同样是符合题意的答案。输入:s = “babad”输入:s = “cbbd”
2025-12-19 11:42:03
134
原创 力扣刷题:最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。使用两个栈,一个做为主栈,一个作为辅助栈,辅助栈中每次存放的是主栈中入栈元素的最小值。--> 返回 -3.--> 返回 -2.void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。MinStack() 初始化堆栈对象。
2025-12-17 12:05:12
166
原创 ⭐力扣刷题:最长递增子序列
子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[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
93
原创 力扣刷题:两数之和
给定一个整数数组 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
159
原创 ⭐力扣刷题:三数之和
给你一个整数数组 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
229
原创 力扣刷题:另一棵树的子树
否则,返回 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
247
原创 ⭐力扣刷题:字符串解码
编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。这道题的本质在于使用两个栈来模拟递归的过程,遇到左括号时保存当前状态,遇到右括号时恢复状态并计算。输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。每次进入新的括号层级时,把外层状态存入栈中,自己从空白开始。给定一个经过编码的字符串,返回它解码后的字符串。
2025-12-16 11:05:05
132
原创 力扣刷题:删除排序链表的重复元素Ⅱ
给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字。返回 已排序的链表。使用虚拟头节点简化边界情况处理(特别是头节点可能被删除的情况)输入:head = [1,2,3,3,4,4,5]输入:head = [1,1,1,2,3]r:指向已确认不重复的最后一个节点。q:探索当前节点后面是否有重复值。方法:双指针 + 虚拟头节点。输出:[1,2,5]
2025-12-15 12:52:39
152
原创 力扣刷题:最长公共子序列
一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。如果 text1[i-1] == text2[j-1],说明当前字符可以匹配,所以:dp[i][j] = dp[i-1][j-1] + 1。dp[i][j] 表示字符串 text1 的前 i 个字符和 text2 的前 j 个字符的最长公共子序列长度。如果不相等,只能看:dp[i][j] = max(dp[i-1][j], dp[i][j-1])
2025-12-15 12:17:53
112
原创 力扣刷题:删除排序链表中的重复元素
设置一个当前的指针,判断当前指针与当前指针的next的值是否相等,相等的话,当前指针的next直接指向next的next。给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次。返回 已排序的链表。输入:head = [1,1,2,3,3]输入:head = [1,1,2]输出:[1,2,3]
2025-12-15 10:50:31
147
原创 力扣刷题:买卖股票的最佳时机
解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。同时,你不能在买入前卖出股票。解决只买一次,出售一次的题,非常适合使用贪心算法,在最小的时候买入,在最高的时候卖出。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]
2025-12-14 11:51:51
177
原创 ⭐力扣刷题:螺旋矩阵
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]从 right 到 left,遍历第 bottom 行的元素。从 top 到 bottom,遍历第 right 列的元素。从 bottom 到 top,遍历第 left 列的元素。从 left 到 right,遍历第 top 行的元素。输出:[1,2,3,6,9,8,7,4,5]
2025-12-14 11:41:32
289
原创 ⭐力扣刷题:岛屿数量
给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。:以这块陆地为起点,向四个方向扩散,把所有相连的陆地都"沉没"(标记为’0’)3 计数岛屿:每发现一次新陆地,就意味着找到了一个新的岛屿。1 发现新陆地:每当找到一块未被访问的陆地(‘1’)此外,你可以假设该网格的四条边均被水包围。输入:grid = [输入:grid = [
2025-12-12 11:58:56
156
原创 力扣刷题:最大子数组和
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]以每个位置为结尾的子数组,最大和是多少?2 将当前元素加入到前面的最大子数组中。1 从当前元素重新开始一个新的子数组。这道题使用Kadane算法来解题。输入:nums = [1]是数组中的一个连续部分。Kadane算法采用。
2025-12-12 11:05:06
195
原创 力扣刷题:环形链表
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。设置快慢指针,如果有圈的话,快慢指针一定会相遇,如果不能相遇,就代表没有环。输入:head = [3,2,0,-4], pos = 1。给你一个链表的头节点 head ,判断链表中是否有环。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。解释:链表中没有环。
2025-12-12 10:45:08
137
原创 力扣刷题:验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。给你一个字符串 s,如果它是 回文串 ,返回 true;这道题解题方法很简单,设计两个指针,一个往右,一个往左,对比两个指针的内容即可。解释:“amanaplanacanalpanama” 是回文串。解释:在移除非字母数字字符之后,s 是一个空字符串 “”。由于空字符串正着反着读都一样,所以是回文串。解释:“raceacar” 不是回文串。输入:s = “race a car”输入:s = " "
2025-12-11 12:55:31
158
原创 力扣刷题:最长公共前缀
这道题思路很简单,首先遍历第一个字符串,然后在内部再来一个for循环遍历数组中剩下的字符串,让他们的字符一一对比即可。输入:strs = [“flower”,“flow”,“flight”]输入:strs = [“dog”,“racecar”,“car”]编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。解释:输入不存在公共前缀。
2025-12-11 12:44:05
191
原创 力扣刷题:合并区间
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。解释:区间 [1,4] 和 [4,7] 可被视为重叠区间。输入:intervals = [[1,4],[4,5]]输入:intervals = [[4,7],[1,4]]输出:[[1,6],[8,10],[15,18]]输出:[[1,5]]输出:[[1,7]]一次遍历:不需要回溯。
2025-12-11 12:29:50
95
原创 ★力扣刷题:LRU缓存
void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value;int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1。// 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}// 缓存是 {1=1, 2=2}// 返回 -1 (未找到)lRUCache.get(1);// 返回 -1 (未找到)lRUCache.put(1, 1);
2025-12-10 12:22:01
403
原创 力扣刷题:重拍链表
先用快慢指针找到链表的中点,然后将链表的后半部分反转,最后将左右两个链表合并。不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。输入:head = [1,2,3,4,5]输入:head = [1,2,3,4]输出:[1,5,2,4,3]输出:[1,4,2,3]
2025-12-10 11:43:06
188
原创 力扣刷题:全排列
解开这道题就是使用了回溯算法,回溯算法通过深度优先搜索(DFS)的方式遍历所有可能的解,并在搜索过程中通过剪枝避免无效搜索。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。输入:nums = [1,2,3]输出:[[0,1],[1,0]]输入:nums = [0,1]输入:nums = [1]
2025-12-09 12:10:16
198
原创 力扣刷题:合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。的作用是返回两个数中的最小的数,终止条件是把两个表轮流转一遍。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]在这里使用了一种简单的办法–递归。
2025-12-09 11:13:53
96
原创 力扣刷题:反转链表
1 初始化curr指向头节点,prev指向null,这里的prev代表原始链表的反方向的下一个节点(与原始链表的next作用一致)给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。3 此时当前节点下一个节点可以赋值为prev(此过程在做翻转)2 使用临时变量保存原始链表当前节点(curr)的下一个节点。输入:head = [1,2,3,4,5]这道题我用了最经典的思路–双指针法。输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []
2025-12-09 10:57:22
94
原创 力扣刷题:二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]这道题的思路很简单,就是广度优先搜索(BFS)+队列实现。3 每次当当前节点从队列出去时,它的左右孩子进入队列。2 queue.length代表了每一层的节点个数。1 定义一个队列的变量,初始时候存入我们的根节点。输出:[[3],[9,20],[15,7]]输入:root = [1]输入:root = []
2025-12-08 16:15:31
195
原创 力扣刷题:合并两个有序数组
合并结果是 [1]。2 当 index1、index2 都大于 0 的时候,将 nums1[index1]、nums2[index2]中较大的元素放入 nums1[tail],同时相应的下标往前移一位,注意也要 tail–输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。输入:nums1 = [1], m = 1, nums2 = [], n = 0。
2025-12-08 15:49:09
185
原创 力扣刷题:字符串相加
3 接下来从右到左遍历任意补全后的字符串,将两个字符串对应的每一位进行转换后的数字相加到一起,随后进行进制变量的计算。你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。输入:num1 = “11”, num2 = “123”输入:num1 = “456”, num2 = “77”输入:num1 = “0”, num2 = “0”
2025-12-08 15:04:24
108
原创 力扣刷题:比较版本号
version1 的第二个修订号为 “2”,version2 的第二个修订号为 “10”:2 < 10,所以 version1 <输入:version1 = “1.0”, version2 = “1.0.0.0”输入:version1 = “1.01”, version2 = “1.001”输入:version1 = “1.2”, version2 = “1.10”version1 有更少的修订号,每个缺失的修订号按 “0” 处理。忽略前导零,“01” 和 “001” 都代表相同的整数 “1”。
2025-12-06 18:36:58
283
前端领域使用基础的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订阅