- 博客(38)
- 收藏
- 关注
原创 lc142.环形链表Ⅱ
双指针采用快慢指针,快指针每次走一步,慢指针每次走两步,最后两个指针如果相遇一定是在环里面,如果没有相遇就说明没有环,因此实现了判环。,通过模拟的方法找到关系式,然后实现。
2024-01-22 13:37:54 472
原创 lc209.长度最小的子数组(滑动窗口)
窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。滑动窗口:所谓滑动窗口,
2024-01-13 11:57:46 331
原创 lc977.有序数组的平方
对于非递减排序的数组,可能出现负数,平方后未必是非递减序列,可能是一个两端大中间小的序列。所以需要将两端的值比较大小后,将较大的插入一个数组的末尾,因为最大值必然出现在两端,因此要先确定最大值。
2024-01-12 20:23:49 352
原创 lc844.比较含退格的字符串
相较于移除字符,这里并不是遍历到等于目标值的时删除当前值,而是遍历到目标值时删除前一个值,因此在双指针移动时,移动到目标值时并不能只移动快指针,因为快指针要覆盖的是上一个值,所以慢指针要回退。
2024-01-12 15:12:28 310
原创 lc283.移动零
我的思路:数组题优先考虑双指针,题目要求将数组中的0全部移动到最后,可以认为先删除数组中所有的元素,当快指针遍历到数组最后,慢指针前的元素都是非零。此时将慢指针后的元素全部赋值为0即可。右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。因此每次交换,都是将左指针的零与右指针的非零数交换,且非零数的相对顺序并未改变。使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。右指针左边直到左指针处均为零。左指针左边均为非零数;
2024-01-11 20:16:16 465
原创 力扣35.搜索插入位置
1.target在数组内,但不是数组元素(return r + 1)2.target比所有元素都小(return r + 1)3.target比所有元素都大(return r + 1)4.target已找到(return mid)
2023-05-04 14:02:50 41
原创 AcWing1209.带分数
思路:通过DFS全排列9位数,将9位数分为3块,通过i,j双指针实现,第一块为a,第二块为b,第三块为c,如果target = a+b/c,则计数器+1。
2023-04-06 16:32:26 59
原创 AcWing3502.不同路径树
两层循环,将图中每个点都作为起始点,进行DFS,在DFS过程中记录下层数和形成的数的值,DFS进行k次后,将形成的数值插入哈希表,最后输出哈希表的大小即可。(注意:因为题目说明走过的点可以再走,所以不需要记录状态。另外,因为unordered-set对于相同的值只能存一次,所以无需担心记录重复的路)
2023-04-05 23:45:37 30
原创 AcWing.842排列数字(全排列问题)
思路:通过DFS实现。DFS本质通过递归,首先填写第一个位置,填完之后递归填写第二个,直到填写不下,即代码中(此时回溯,寻找倒数第二个位置还有没有别的数可以填写,不停回溯,从倒数第一位回溯到第一位,直到所有情况全部排列。
2023-04-05 17:09:52 53
原创 AcWing1233.全球变暖
通过遍历一片连通块,如果该连通块中块的总数等于连通块中会被沉没的块的总数,则该连通块会被沉没。解题思路:BFS(也可以使用DFS)解题思路:BFS(也可以使用DFS)
2023-04-05 16:32:17 25
原创 AcWing2058.笨拙的手指
3.通过哈希表,将十进制数存入哈希表来判断,是否已经出现过该数字。2.将b进制数转换成十进制(秦九韶算法)1.列举出2进制和3进制下,改变一位数后的所有可能。1.列举出2进制和3进制下,改变一位数后的所有可能。
2023-04-01 00:14:46 36
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人