
算法学习
文章平均质量分 60
Circusxxx
这个作者很懒,什么都没留下…
展开
-
2024.6.14KMP算法学习记录
主要是想起到一个记录的作用。原创 2024-06-14 20:27:46 · 165 阅读 · 0 评论 -
2024.6.7力扣刷题记录-链表篇学习记录
【反转链表】 https://www.bilibili.com/video/BV1sd4y1x7KN/?和(4)的解法道理是一样的,都是根据数值的范围确定只能进位一次。(4)是从上节点的角度,而(5)是从下节点的角度。当l1,l2遍历完但有进位时,会缺少节点,最好还是使用开新的储存空间的方法。又用到了栈,又用到了头插法,又新建节点,效率不是很高。先全部入栈,弹出一个运算一次头插一次。k个节点循环的做法,此时k=2。两个为一组直接进行反转连接。原创 2024-06-07 23:10:30 · 657 阅读 · 0 评论 -
2024.5.24AcWing刷题记录-785. 快速排序
知识点:快速排序+三路快速排序。三路快速排序+随机基准值。原创 2024-05-24 23:08:16 · 177 阅读 · 0 评论 -
2024.5.6力扣刷题记录-二叉树学习记录5(未完)
【二叉树的层序遍历【基础算法精讲 13】】 https://www.bilibili.com/video/BV1hG4y1277i/?原创 2024-05-22 13:03:36 · 416 阅读 · 0 评论 -
2024.4.(22,23,28号)力扣刷题记录-二叉树学习记录4
【二叉树的最近公共祖先】 https://www.bilibili.com/video/BV1W44y1Z7AR/?(2)先序遍历,来自视频代码。(2)先序优化,来自视频代码。不会,学习一下,来自灵神题解(还有另一种写法,来自评论(原创 2024-04-28 21:24:14 · 381 阅读 · 1 评论 -
2024.4.8Morris中序遍历(线索二叉树)学习
既然递归中使用栈的原因是想记录前驱节点,那么我们只要达到记录前驱节点的目的即可不使用栈。首先,它的本质还是中序遍历。正常的中序遍历,在“递”左子树时是可以直接通过左指针到达,但是在“归”根节点的时候是没有办法直接到达的(右子树只用“递”,不用“归”)。而“归”的时候均是到达叶子节点才“归”,则可以充分利用叶子节点的左右空指针,将右空指针指向根节点,这样就可以直接“归”到根节点。其中,为什么是右空节点呢?原创 2024-04-09 00:27:40 · 828 阅读 · 0 评论 -
2024.4.7力扣刷题记录-数组篇刷题记录2
心路历程简直和他说得一模一样,后面对原代码进行修改的时候,没有想到可以模拟修改的过程。多对前修改少对后修改,防止后面更麻烦。1.遍历,指针(环状替换)。时复O(n), 空复O(1)。时复O(n), 空复O(1)。3.纯粹的python切片语法。遍历, 模拟进行修改。2.一次遍历,参考快排。1.双指针, 模拟(两次遍历)注意python中翻转的方法。),自己加了一些注释。原创 2024-04-08 06:52:02 · 333 阅读 · 0 评论 -
2024.4.5力扣刷题记录-数组类刷题记录1
在遍历过程中动态寻找最小值,参考官方题解评论(直接相乘,但是会有溢出风险。不会,来自官方题解(原创 2024-04-05 22:45:14 · 344 阅读 · 0 评论 -
2024.4.(3,8,21号)力扣刷题记录-二叉树学习记录3
是 Python 3.3 引入的语法,用于简化生成器函数(generator function)中的 yield 语句的嵌套。它的作用是将一个可迭代对象(比如另一个生成器)中产生的值直接传递给外层的生成器。函数通常用于在一个序列中生成相邻的元素对。这个函数在给定一个序列时,会返回一个迭代器,每次产生相邻的两个元素组成的元组。后者是类变量,随着实例不同值相同,是同一个变量。使用pairwise函数对中序遍历后的迭代器相邻两项进行相减。),空可以不用返回。(2)中序遍历+迭代器。前序遍历,类似二分。原创 2024-04-03 17:05:41 · 603 阅读 · 0 评论 -
2024.(3.30和4.1)力扣刷题记录-二叉树学习记录2
递可以不用每次都更新v值,因为从上到下能确保最大小值就是该条路径的,而没有受其他路径影响;而归每次都需更新v值,一个节点有左右两边两条路径到达。学习一下灵神的写法,来自视频。不会,来自视频代码。不会,全都来自灵神题解(原创 2024-03-30 19:22:09 · 562 阅读 · 0 评论 -
2024.3.(26,27号)力扣刷题记录-二叉树学习记录1
带你理解递归的本质!之前有一点这种想法,但是没有实现。只局限在了在归的时候进行操作,而没有想到在递的时候进行操作。(2)递归+全局变量(准确来说是非局部)时空复杂度均为O(n)。(2)递归+数学。(1)递归+字符串。(1)递归+非局部变量。原创 2024-03-26 21:11:30 · 386 阅读 · 0 评论 -
2024.3.(24,25号)力扣刷题记录-二分查找学习记录2
【搜索旋转排序数组【基础算法精讲 05】】 https://www.bilibili.com/video/BV1QK411d76w/?(1)排序,时复O(nlogn)(函数)或O(n)(遍历寻找)(2)二分查找,参考学习视频。原创 2024-03-24 22:46:01 · 359 阅读 · 0 评论 -
2024.3.(18,23号)力扣刷题记录-二分查找学习记录1
正整数个数只用找到正整数开始的位置,其到结尾均为正整数;同理,负整数只用找到负整数结束的位置。正整数开始的位置即为大于等于1的位置,负整数结束的位置即为大于等于0的位置减一。注意:1.统一区间符号;2.大于小于等于符号及转换关系;3.注意while那里的要求是遍历完所有的元素,即闭区间为空(l==r不为空)。或使用二分查找库bisect,参考灵神题解(时复O(logn),空复O(1)。遍历时复O(n^2)。原创 2024-03-18 23:00:24 · 285 阅读 · 0 评论 -
2024.3.(16,17号)力扣刷题记录-滑动窗口学习记录
注意:这里的时间复杂度是O(n)的,而不是O(n^2)。因为循环次数和L,R移动的次数有关,但是L,R之间是没有关系的;L最多只移动n次,R也是。是相加的关系而不是相乘。我根据7视频的思路写的代码,居然超时了。仔细观察发现,我使用切片求和的话,每一次判断都要求一次,这样时间就长了。原创 2024-03-16 21:42:18 · 298 阅读 · 1 评论 -
2024.3.(15,16号)力扣刷题记录-相向双指针练习
才反应过来,枚举最大边,就变成了a+b > target的题目了,就能使用相向双指针来达到目的。思路:将它一层一层地看,记录单层接水量然后相加。虽然我已经做了优化了,但是时复毕竟是O(n^2),又。当时我没有想到遍历大的数,就使用的同向双指针,后面看了灵神题解(),特别是优化部分很神。后面方法16号写(未完待续)相向双指针,参考灵神代码(1.分层遍历(但是超时了)原创 2024-03-15 22:26:51 · 284 阅读 · 1 评论 -
2024.3.10在python中模拟静态变量+nonlocal关键字学习记录
global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)(摘自链接)2.python中global和nonlocal用法的详细说明 - 初识CV的文章 - 知乎。nonlocal 关键字用于在嵌套函数内部使用变量,其中变量不应属于内部函数。2.python的类中,如何定义静态变量和非静态变量?原创 2024-03-10 23:49:36 · 242 阅读 · 1 评论 -
2024.3.(6,10号)前缀和与差分算法学习
【STUACM-算法入门-前缀和与差分(含二维)】 https://www.bilibili.com/video/BV1pi4y1j7si/?修改的部分为:1.将差分数组长度加一;2.去掉前缀和数组,直接对差分数组操作;3.去掉将原数组映射到差分数组的过程,先进行操作,再向原数组映射即可;4.增加了在差分数组映射回原数组后将差分数组初始化(全置为0)的操作,便于后续增加操作。在写这个代码的时候有种很熟悉的感觉,然后发现。这道题就是求前缀和数组的写法,该题题解在《4.二维差分代码(周末再补上)原创 2024-03-06 20:39:41 · 217 阅读 · 0 评论 -
2024.3.5力扣刷题记录-1455. 检查单词是否为句中其他单词的前缀(未完)
此处是使用数组存储字典树,此处运行时长和内存会受N的影响,但是如果N太小了又存储不下,后面会尝试更改为使用字典来存储字典树(写好了再加上)。1.解法一:循环遍历。原创 2024-03-05 23:02:04 · 383 阅读 · 0 评论