- 博客(17)
- 收藏
- 关注
原创 刷题记录(回溯)
首先确定递归函数参数:digits、index(记录遍历到了第几个数字)、存放遍历节点的临时数组;终止条件:当index等于digits的长度时,递归结束;单层遍历逻辑:取得第index个数字所代表的字符数组,然后遍历这个数组。思路:题目中的n限定了集合的范围,如n=4时,集合为1,2,3,4;k则是每个组合的长度。我们可以得出该题目的大概过程就是:从集合中取出一个数,然后与集合中剩下的数形成组合,直至新集合的长度等于k。递归的思路:使用for循环遍历集合,使用递归使取出的第一个数与剩下的数组成组合。
2023-09-10 15:26:04
130
1
原创 刷题Day13
递归的终止条件是没有子节点且targetNum等于0,返回true,如果节点为空则返回false。因为需要计算不同节点的路径总和以找出适合题意的路径总和,所以使用递归 + 回溯。递归的单层逻辑:找到当前数组的最大值,以此为根节点切割左右子树。思路:首先注意题目要求,
2023-09-08 09:48:34
137
1
原创 刷题Day12
思路:使用递归,因为是比较高度,所以使用后序遍历。在递归中明确单层的逻辑:分别求出其左右子树的高度,然后如果差值小于等于1,则返回当前二叉树的高度,否则返回-1,表示已经不是二叉平衡树了。思路:使用递归 + 回溯。使用回溯是因为一个结点有可能左右节点都存在,所以需要使用回溯记录同一节点的不同路径。
2023-09-07 13:47:42
110
原创 记录一个小问题
在使用v-for渲染图片时,需要将src的路径用变量表示时,可以使用绝对路径,或者将图片使用import导入。因为在Vue模板中,相对路径时相对于当前页面的URL进行解析。
2023-09-05 23:24:29
92
1
原创 刷题Day11
思路:使用层序遍历。由题可知,需要将指针指向下一个结点。所以我们可以记录当前结点的前结点,并将前结点指向当前结点即可。需要注意的是,在添加子节点的时候,添加前结点的子节点。思路:层序遍历,每遍历一遍就相当于树的深度加一。只有当没有左右孩子的时候才是最低深度。思路:遍历二叉树,每个结点的左右结点互换。
2023-09-04 22:33:00
125
1
原创 刷题Day10
思路:使用队列实现一层一层遍历的要求,对每一层进行遍历,将其val存到临时数组中,并将节点的左右节点存到队列中,用于进行下一层遍历。思路:自底向上遍历二叉树,就是自上而下遍历,然后将数组反转即可。
2023-09-04 21:41:02
114
1
原创 刷题Day09
单调队列真是一种让人感到五味杂陈的数据结构,它的维护过程更是如此.....就拿此题来说,队头最大,往队尾方向单调......有机会站在队头的老大永远心狠手辣,当它从队尾杀进去的时候,如果它发现这里面没一个够自己打的,它会毫无人性地屠城,把原先队里的人头全部丢出去,转身建立起自己的政权,野心勃勃地准备开创一个新的王朝.....这时候,它的人格竟发生了一百八十度大反转,它变成了一位胸怀宽广的慈父!思路:利用栈后入先出的特性,与栈最后一个字符做对比,相同则去除最后一位,否则,将该字符加入栈中。
2023-09-01 14:24:08
57
1
原创 刷题Day07
首先对数组进行升序排序,然后设第一层for循环,i从下标0的地方开始,left从i+1开始,right从数组最后一位开始。在进行内层循环移动left和right指针时,当nums[i] + nums[left] + nums[right]>0时,说明nums[right]大了,需要将right--,反之nums[i] + nums[left] + nums[right]<0时,left++思路:双指针,s[left]和s[right]的字符互换。思路:重点在于如何遍历每段字符串的首字符。
2023-08-29 13:38:16
58
3
原创 Vue3响应式简单实现
通俗来讲,就是数据更新时,视图也实时更新。在JavaScript中,无法实现这样的效果let A0 = 1;let A1 = 2;A0 = 0如果我们想要实现响应式的效果,就要将其包装为函数这个update函数会产生一个副作用,简称为作用(effect),因为它会更改程序里的状态A0和A1被视为这个作用的依赖(dependency),因为它们的值被用来执行这个作用。因此这次作用也可以说是一个它依赖的订阅者当一个变量被读取时进行追踪。例如我们执行了表达式A0 + A1的计算,则A0和A1。
2023-08-28 23:53:10
174
1
原创 代码随想录day06
思路:首先定义 一个map,key放a和b两数之和,value 放a和b两数之和出现的次数。使用一个变量count存储次数。遍历C和D数组,找到如果 0-(c+d) 在map中出现过的话,就用count把map中key对应的value也就是出现次数统计出来。思路:定义一个map,存储magazine字符串的每个字符及出现次数,key代表字符,value代表出现次数。然后遍历ransomNote字符串,如果出现则使map中的对应value减一,如果map中没有对应字符,则直接返回false。
2023-08-26 13:00:38
98
原创 学习记录-浏览器渲染流程
reflow翻译过来就是重排,本质就是重新计算布局树。当进行了会影响布局树的操作后,需要重新计算布局树,就会引发reflow(重排)。为了避免连续多次操作导致布局树反复计算,浏览器会合并操作,当JS代码完成后再进行统一计算。repaint翻译过来就是重排,本质就是可见样式发生了改变,对布局树没有影响,需要重新计算分层,所以会引发repaint。
2023-08-23 22:11:46
137
原创 代码随想录刷题Day05
思路:创建一个长度为26的数组,数组中的每个元素代表着字母出现的次数。循环遍历两个字符串,前面的字符串出现的字母在数组中加一,第二个数组出现的字母在数组中减一。思路:使用Map存储键值对(元素,元素下标),map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(也就是相加等于target)思路:利用Set去重的特性,将nums1数组去重,然后遍历nums2,判断nums1Set里是否有nums2中的元素,。
2023-08-23 15:22:13
69
原创 代码随想录Day04(率土红颜出王异了吼吼吼)
思路:使用快慢结点的思路,先让快指针走n步,然后以快指针为结束条件,通过slow节点删除目标结点。思路:使用快慢指针的思想,设置一前一后两个节点,循环反转。思路:设置虚拟头节点,然后就是不断交换相邻的两个元素。
2023-08-22 11:12:41
76
1
原创 代码随想录Day03
思路:设置虚拟头节点,采用前后节点的方式遍历链表。虚拟头节点为前一位,链表首位为当前节点。遍历过程中,如果当前节点的值等于val,就将前节点的next指向当前节点的next。思路:创建一个私有方法getNode,用于获取第n位节点。
2023-08-21 16:25:38
58
1
原创 代码随想录刷题Day01
思路:根据题目描述,只需要将需要移除的元素放置至数组末尾即可。使用快慢指针,在遍历过程中,只要快指针的值不等于要移除的元素,就不断将快指针的值赋给慢指针,如果快指针的值等于要移除的值,则慢指针不动,快指针加一,最后返回慢指针的值。思路:使用滑动窗口,判断窗口内的值是否大于等于target,如果大于,就不断增加left,减少窗口长度直到窗口内的值小于target,不断的与res比较大小。思路:因为是有序数组,所以使用双指针,从左右两边开始比较绝对值,将比较大的数的绝对值存入ans中。
2023-08-18 10:35:32
212
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅