- 博客(22)
- 收藏
- 关注
原创 树的前序,中序,后序遍历,组合的算法,前中序和中后序
树是由 n(n≥0)个结点组成的有限集合。当 n = 0 时,称为空树;当 n > 0 时,有一个特殊的节点称为根结点(root),它没有前驱结点;其它结点分为 m 棵互不相交的子树。
2025-03-20 22:42:17
1313
2
原创 今天刷到树中的相同树和对称树,题目不是很难,但是解题思路比较好,记录一下。
然后一行代码是判断这两个树的值是不是相等,在这个判断的过程中,再判断p.left和q.left是否相同,判断q.right和p.right也是否相同,不需要很长的代码,在树里面,这个判断树的思路非常好,下面那道对称树的题目也有所体现。这道对称树的题跟上面那道相同树的题解题思想一样,在树中,不需要要多余的代码,就简单平判断左子树和右子树就可以,因为这道题是对称树,所以在判断过程中是p.left和q.right是否相等,且最后需加上这个树的左右侧是否相等,因为这个是一棵树。
2025-03-19 11:55:30
119
原创 LRU缓存刷题的应用
LRU(最近最少使用算法):是最近最少使用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法是常见的页面置换算法,该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t,当要淘汰一个页面时,选择现有页面中t最大的。
2025-03-17 22:40:25
1218
原创 今天刷到分隔链表,有几个容易踩的坑,记录一下。
然后遍历链表,注意遍历链表是while head,然后将头节点的值与x做比较,将两个链表做区分,这里sml.next = head是将sml的指针指向就是head,就是将head链表拿到sml_dummy中,big也一样。- sml.next = big_dummy.next 我一开始写成sml_dummy.next = big_dummy.next ,这个其实不对,因为sml_dummy是一个为0的值,所以如果是sml_dummy的话就会导致值缺失。现在来主要讲一下步骤。
2025-03-17 12:31:53
474
原创 今天刷到一道旋转链表的题目,记录一下。
这道旋转链表的核心是有一个tail和Len,tail一开始是头节点,Len一开始长度是1,然后循环只要tail.next为空,tail就往后走,与此同时,Len的长度也加一,这一步是为了将整个链表的长度衡量出来,而且将tail置于链表的末尾节点。然后此时将Len和k的差值进行取余,并将链表进行环状(即为了后面tail移动时始终在这个链表中)。然后此时将head = tail.next 头节点变为tail的后一个节点,tail.nexr = None 将环形链表断开,最后返回头节点。
2025-03-16 22:20:39
292
原创 今天刷题刷到一道删除链表中的元素,记录一下。
这道题一开始是设置哨兵节点,将左右指针均从哨兵节点开始,然后右指针先走n步,然后左指针开始走,当right.next为None时循环结束,即右指针到达链表最后一个元素,此时左指针就是n+1,为什么此时左指针是n+1呢?因为左指针和右指针相隔n个元素,然后此时右指针到达末尾(举个例子,总长度为5,n为2,这个n是倒数元素,右指针现在在第5个元素,左指针和右指针相隔2个元素,左指针在第3个元素,也是倒数第3个元素)。
2025-03-16 11:42:54
269
原创 今天刷到反转链表,记录一下。
然后接下来的这一段可以适应于绝大多数的反转链表,首先将pre置于None,然后将cur作为left,进行第二次遍历,遍历的范围是从left到right,因为后面要进行反转链表,所以保证一开始的链表的顺序(为了后面不让链表断裂找不到接下来的节点),将此时cur的指针指向下一个节点。然后就是将p0(一开始的头节点)指针指向后两位weicur,将后一位指向pre,因为此时反转的链表顺序已经完成了,最后返回哨兵节点的指针所指向的位置,就是一个反转后的链表。- 其次,讲一下这道题的思想。
2025-03-15 22:22:18
431
原创 今天记录一下哈希表,因为一直有点不理解,所以今天查找了一些资料来理解哈希表
这道题使用的是哈希表,在python中字典就采用了哈希表,以键值对的形式来呈现。哈希表运用的方式主要是一个索引和一个值,值用来存储,索引用来记录存储值的位置。比如这道题就是链表的深拷贝,就采用了哈希表,在第一遍遍历过程中,就会把cur作为键,然后将cur.val作为新节点的值,第二次遍历的时候,将原来链表的指针更新为经过深拷贝之后的指针,就是第一次是将原链表与这个链表进行映射,就是这两个链表之间的关系,第二次遍历是将这个链表的指针更新为自己链表,而将原链表的映射全部删除。
2025-03-13 13:48:10
791
原创 刷到链表很经典的一道题,合并两个链表
首先判断list1和list2是否为空链表。然后重要的一步是比较这两个链表中的值,如果list1的值小于list2,则将list1.next与list2进行合并,此处因为是合并小的,而list1正是值里面小一点的。然后再一直合并就可以得到一个非递减的链表。
2025-03-12 22:12:38
204
原创 今天刷到链表的题目,复习一下链表
这道题主要是一个两个数倒序相加。由于一开始的循环会导致有空节点,注意此处空节点为None,既没有val,也没有next,显示该链表为空,所以无法将空节点的末尾添加节点。但是我们可以通过初始化一个空哨兵(即一个空链表)的形式,使有一个指针next指向第一个节点,使得如果是空节点,也可以在末尾添加节点。然后因为这道题是倒序相加,所以采用 % 10提取个位数,而carry作为一个进位,采用//10来表示1还是0,1为进位,0为不进位。之后就是按照单链表进行就可以了。
2025-03-12 20:50:28
278
原创 今天操作git的时候出现了一些问题,记录一下。
这个是最快且最有效的手段,因为当推送不成功,有进行了很多操作,例如pull 操作,但是结果就是这个问题时间越花越长,且解决不了问题,建议直接重新创建仓库。- git push -u origin master --force 注意:强制推送可能会导致一些文件损坏,比如我推送的时候就出现了有的文件未推送成功。此处有一个初始化readme文件,注意此处不要点击这个,如果点击,将项目推送到仓库时可能会出现推送失败(此处为将别人的项目推送到自己的gitee仓库)。如果点击这个,以下有两种解决方式。
2025-03-12 13:54:07
120
原创 今天刷题遇到了一个python计算的坑
python做除法时,往往是向下取整。比如-3 /2 = -2(而不是-1)。所以用int(num1 /float(num2))来表示除法。- python可以判断一个字符串是不是整数,所以遇到数字,我们用int来表示,并抛出异常来区分数字和运算符。
2025-03-10 16:47:54
600
原创 今天刷题的时候,遇到栈的题目,刚好复习一下栈。
- 栈,是后进后出,这个知识对理解这道题有一定的帮助。- 这道题是找到最小栈的题目,因为栈虽然是后进后出,但栈顶元素不一定是最小值,而此时我们设置一个辅助栈,即将最小值放到辅助栈中,只有当主栈的栈顶元素等于辅助栈的栈顶元素时,辅助栈才会弹出。这就可以保证辅助栈中的栈顶元素一定是最小值。
2025-03-10 13:14:25
326
原创 今天这道题看了好久的题解,才理解意思,看来有的时候刷题也要积累一些知识。
这道题用的是卷积的方法,一开始通过遍历来添加两行两列(如果有多出来的行或者列,则去掉,因为矩阵是一个行列相同的),因为需要的是周围的8个数,然后再通过切片将原来的矩阵复制到新的矩阵中,然后关键的是卷积的一个矩阵,[1, 1, 1], [1, 0, 1],[1, 1, 1],然后将切片的每个矩阵与kernel相乘,注意这里面是每个相乘,因为这相当与是将原矩阵的每个值都判断一下。然后做一个判断,就可以得出答案。
2025-03-08 10:09:38
429
原创 今天刷题的时候刷到矩阵这一类的题,用来记录一下两中情况。
第一中情况是整体矩阵顺时针旋转,这个时候可以发现规律,即旋转之前的行就是旋转之后的列,旋转之前的列,就是旋转之后的n - 1 - i行,不过要注意的一点是这个是矩阵中的matrix[i][j],i,j都是从0开始的。第二种是由矩阵中移动的,这个是先向右移动,然后向下,向左,向上,这类题可以先确定好四个方向,然后在矩阵中移动的时候把行列的移动加一,需要注意的是一个当到矩阵一个方向的边界的时候,需要转向,即(1 + di)% 4。
2025-03-06 15:30:31
244
原创 今天刷题的时候发现了一个问题,之前也没怎么注意,但是今天就一直显示超出时间限制,我一看时间复杂度太高了。于是进行了修改
之前没有怎么区分while和if,但是while代表的是循环,而if只是做一次判断,在时间复杂度上完全不一样,然后第二点是我一开始写的是 return ans.append([x, nums[j], nums[k]]),发现报错了,之前查了一下资料,发现append只是在列表上做添加,而实际返回值是None,后面在加上return ans就可以了,不能直接return append。
2025-03-05 20:05:47
149
原创 else的注意用法
因为今天刷题的时候突然刷到一道题,但是因为没有注意else,导致测试案例可以通过,等到提交的时候却报错了,记录一下,防止以后出错。将 else去掉,并且将return -1写到循环外面就可以解决这个问题。这里因为当第一次循环查找时没有匹配的话,就直接跳出循环。
2025-03-03 12:46:06
122
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人