算法
文章平均质量分 90
cxy妖妖灵
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Day14-二叉树2-代码随想录:翻转、对称、深度、高度
深度:指从根节点到该节点的路径上的边数。根节点的深度为0,其子节点的深度为1,以此类推。高度:指从该节点到最远叶子节点的路径上的边数。叶子节点的高度为0,非叶子节点的高度为其子节点高度的最大值加1。原创 2025-09-05 15:00:38 · 678 阅读 · 0 评论 -
Day10-栈与队列-代码随想录:有效括号、队列库
请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(,说明有相应的左括号没有右括号来匹配,所以return false。了,说明右括号没有找到对应的左括号return false。第一种情况,字符串里左方向的括号多余了 ,所以不匹配。第二种情况,括号没有多余,但是 括号的类型没有匹配上。第三种情况,字符串里右方向的括号多余了,所以不匹配。首先要弄清楚,字符串里的括号不匹配有几种情况。第二种情况:遍历字符串匹配的过程中,发现。第三种情况:遍历字符串匹配的过程中,原创 2025-09-01 11:20:25 · 754 阅读 · 0 评论 -
Day15-二叉树3-代码随想录:递归、回溯、深度、路径、隐形回溯
的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。关于根节点的深度究竟是1 还是 0,不同的地方有不一样的标准,leetcode的题目中都是以节点为一度,即根节点深度是1。当遇到左叶子节点的时候,记录数值,然后通过递归求取左子树左叶子之和,和 右子树左叶子之和,相加便是整个树的左叶子之和。判断一个树的左叶子节点之和,那么一定要传入树的根节点,递归函数的返回值为数值之和,所以为int。,属于位操作符的一种。原创 2025-09-08 00:21:11 · 825 阅读 · 0 评论 -
Day7-字符串p1-代码随想录:双指针,join,判断数字/字母
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。如果想用下标赋值的方式反转字符串,应该先把字符串转成列表,操作完成后再转回字符串。对于输入字符串 "a5b",函数应该将其转换为 "anumberb"输出:打印一个新的字符串,其中每个数字字符都被替换为了number。,从字符串开头算起,每计数至。个,则将剩余字符全部反转。原创 2025-07-15 11:11:40 · 658 阅读 · 0 评论 -
Day8-字符串p2-代码随想录:KMP,字符串匹配
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。输入:输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。例如,对于输入字符串 "abcdefg" 和整数 2,函数应该将其转换为 "fgabcde"。输出:输出共一行,为进行了右旋转操作后的字符串。原创 2025-09-01 10:14:29 · 487 阅读 · 0 评论 -
Day18-二叉树6-代码随想录:双指针、二叉搜索树、递归返回值(搜索树/边)、最近公共祖先(自底向上、回溯)
求最小公共祖先,需要从底向上遍历,那么二叉树,只能通过后序遍历(即:回溯)实现从底向上的遍历方式。在回溯的过程中,必然要遍历整棵二叉树,即使已经找到结果了,依然要把其他节点遍历完,因为要使用递归函数的返回值(也就是代码中的left和right)做逻辑判断。要理解如果返回值left为空,right不为空为什么要返回right,为什么可以用返回right传给上一层结果。原创 2025-09-08 23:33:30 · 558 阅读 · 0 评论 -
Day13-二叉树1-代码随想录:*递归遍历,迭代遍历
代码随想录https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html二叉树可以链式存储,也可以顺序存储。链式存储方式就用指针, 顺序存储的方式就是用数组。顺序存储的元素在内存是连续分布的,而链式存储则是通过指针把分布在各个地址的节点串联一起。链式存储如图:顺序存储:就是用数组来存储二叉树,顺序存储的方式如图:用数组来存储二叉树如何遍历的呢?如果父节点的数组下标是 i,那么它的左原创 2025-09-05 00:46:49 · 850 阅读 · 0 评论 -
Day17-二叉树5-代码随想录:搜索树、中序遍历
对于树中的任意节点,其左子树的所有节点值均小于该节点的值。其右子树的所有节点值均大于该节点的值。左子树和右子树也必须是二叉搜索树。中序遍历递增性质二叉搜索树也可以为空!插入若小于当前节点值,进入左子树递归插入。若大于当前节点值,进入右子树递归插入。若等于当前节点值,通常根据需求处理(如忽略或更新)。查找若目标值等于当前节点值,返回节点。若目标值小于当前节点值,在左子树中递归查找。若目标值大于当前节点值,在右子树中递归查找。若到达空节点,表示未找到。删除。原创 2025-09-08 21:23:48 · 558 阅读 · 0 评论 -
Day16-二叉树4-代码随想录:path[:]与引用、路径和、中后序构造二叉树
作为节点元素。第三步:找到后序数组最后一个元素在中序数组的位置,作为。原创 2025-09-08 16:55:32 · 1030 阅读 · 0 评论 -
Day11-栈与队列-代码随想录:str转运算符,单调队列,优先级队列,大顶堆,小顶堆
class MyQueue: #单调队列(从大到小self.queue = deque() #这里需要使用deque实现单调队列,直接使用list会超时#每次弹出的时候,比较当前要弹出的数值是否等于队列出口元素的数值,如果相等则弹出。#同时pop之前判断队列当前是否为空。self.queue.popleft()#list.pop()时间复杂度为O(n),这里需要使用collections.deque()原创 2025-09-01 22:13:06 · 1029 阅读 · 0 评论 -
DAY2-数组-代码随想录(双指针,滑动窗口,螺旋矩阵,区间和,前缀和)
然而,由于城市规划的限制,只允许将区域按横向或纵向划分成两个子区域,而且每个子区域都必须包含一个或多个区块。第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间下标:a,b (b > = a),直至文件结束。在一个城市区域内,被划分成了n * m个连续的区块,每个区块都拥有不同的权值,代表着其土地价值。目前,有两家开发公司,A 公司和 B 公司,希望购买这个城市区域的土地。现在,需要将这个城市区域的所有区块分配给 A 公司和 B 公司。原创 2025-05-16 23:20:39 · 277 阅读 · 0 评论 -
Day6-哈希表-代码随想录: dict.get(a,0),defaultdict,双指针,多数之和
仅支持固定的默认值类型(如 intstr等),无法直接使用自定义函数或对象作为默认值。如果需要自定义默认值,可以使用或者通过自定义类来实现。是一个功能更灵活的字典类,适合需要动态填充键值的场景。Counter是一个专门用于统计频率的类,适合处理可迭代对象中的元素频率统计。原创 2025-07-10 00:36:41 · 1132 阅读 · 0 评论 -
DAY5-哈希表-代码随想录(counter,字典操作,幂)
快速判断一个元素是否出现集合里。例如要查询一个名字是否在这所学校里。。原创 2025-07-08 23:23:20 · 830 阅读 · 0 评论 -
DAY4-链表|代码随想录:(相交节点,环形链表,快慢指针)
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。原创 2025-06-26 18:16:39 · 674 阅读 · 0 评论 -
DAY3-链表-代码随想录(虚拟头结点,双指针)
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足的节点,并返回。原创 2025-05-18 23:52:47 · 380 阅读 · 0 评论 -
DAY1-数组-代码随想录(二分查找,双指针,快慢指针,排序
区间定义:左闭右闭时间复杂度:O(logn),其中 n 是数组的长度。空间复杂度:O(1)。原创 2025-05-15 00:09:50 · 366 阅读 · 0 评论
分享