自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 2024.5.25AcWing刷题记录-排序篇

【代码】2024.5.25AcWing刷题记录-排序篇。

2024-05-25 16:56:49 196

原创 2024.5.24AcWing刷题记录-785. 快速排序

知识点:快速排序+三路快速排序。三路快速排序+随机基准值。

2024-05-24 23:08:16 104

原创 2024.5.(23,25,2)力扣刷题记录

check函数是精髓,充分利用了该矩阵的性质,时复最小。通过将坐标一起入堆,更好追踪后节点。2024.5.(25,26号)续:《》2024.5.(25,26号)续。没有利用性质,时复最大。2024.5.25续:《》2024.5.25续。利用每一横排的有序性。

2024-05-23 23:09:25 157

原创 2024.5.22力扣刷题记录

【代码】2024.5.22力扣刷题记录。

2024-05-22 23:02:01 196

原创 2024.5.6力扣刷题记录-二叉树学习记录5(未完)

【二叉树的层序遍历【基础算法精讲 13】】 https://www.bilibili.com/video/BV1hG4y1277i/?

2024-05-22 13:03:36 274

原创 2024.5.(17,18)力扣刷题记录-数组篇记录

我们将第一行数字进行旋转,发现它们出现在第n - 1列,即可总结到:原数组的第i行元素旋转后会出现在n - 1 - i列。同理,我们将第一列数字进行旋转,发现它们出现在第1行,即可总结到:原数组的第j列元素旋转后会出现在第j行。这个方法即是:我们举特定的一(几)整行或者一(几)整列即可得到行号和列号的变化规律。主要是要理清,变化后的数组的横纵坐标是怎么由原数组得到的。这里必须要加tolist()(转来转去效率很低)或者改变定义函数时的输出,不然会因为类型不符合而报错。

2024-05-22 12:59:02 338

原创 2024.5.19力扣刷题记录

【代码】2024.5.19力扣刷题记录。

2024-05-22 10:43:48 119

原创 2024.5.21力扣刷题记录-二分算法篇

通过将范围缩小到[0, n - 2],简化结尾判断。通过使用前缀和,使数组变得有序。不会,来自灵神题解(

2024-05-22 10:33:06 225

原创 2024.5.(15,16号)力扣刷题记录-数组篇记录

博主将这个方法应用于第一题,发现运行超时了。对比后发现,第一题为矩阵而第二题为正方形。当经历一次while循环,相当于转了一圈。当为正方形时,总结束点总是为一圈的结束点;而当为矩形时,总结束点并不是一圈的结束点。当走到终点时,并没有继续走,但是边界会继续收缩,导致死循环。m + n - 1条对角线,参考官方题解(和上一道题类似,只是从取值变成了放值。去掉里面的判断,参考题解(将两过程合并,来自题解(

2024-05-17 15:28:38 192

原创 2024.5.3力扣刷题记录-数组篇记录7

cnt求法参考题解(

2024-05-03 23:47:58 178

原创 2024.5.2力扣刷题记录-数组篇记录6

思路来自官方题解方法2(维护最大三位和最小两位。

2024-05-03 09:39:58 215

原创 2024.5.1力扣刷题记录-数组篇记录5

2.排序,时复O(nlogn),虽然时复不满足要求。2.直接模拟(简洁版)。1.维护第一、第二、第三大值。

2024-05-02 13:41:55 223

原创 2024.4.29力扣刷题记录-数组篇记录4

本质是要抓住“对于一个长度为 N 的数组,其中没有出现的最小正整数只能在 [1, N+1] 中。”,再将数字范围进行限制,转化为之前做过的题型。时复为O(n),无额外空间。题目中的元素范围信息(属于[ 1, n ])也很重要。2.原地操作2,使用正负号标记。这里使用tmp的原因来自评论(3.原地运算,来自官方题解(3.原地交换,来自官方题解。2.一次遍历,来自官方题解(1.原地操作,类比上一题。不会,来自官方题解(

2024-04-29 22:57:34 276

原创 2024.4.28力扣刷题记录-数组篇记录3

同样来自上面评论连接。没有想到用集合找出重复元素。不会,想到了找规律,但是没有总结出来。1.哈希表 + 数学。

2024-04-28 23:16:42 212

原创 2024.4.(22,23,28号)力扣刷题记录-二叉树学习记录4

【二叉树的最近公共祖先】 https://www.bilibili.com/video/BV1W44y1Z7AR/?(2)先序遍历,来自视频代码。(2)先序优化,来自视频代码。不会,学习一下,来自灵神题解(还有另一种写法,来自评论(

2024-04-28 21:24:14 290 1

原创 2024.4.8Morris中序遍历(线索二叉树)学习

既然递归中使用栈的原因是想记录前驱节点,那么我们只要达到记录前驱节点的目的即可不使用栈。首先,它的本质还是中序遍历。正常的中序遍历,在“递”左子树时是可以直接通过左指针到达,但是在“归”根节点的时候是没有办法直接到达的(右子树只用“递”,不用“归”)。而“归”的时候均是到达叶子节点才“归”,则可以充分利用叶子节点的左右空指针,将右空指针指向根节点,这样就可以直接“归”到根节点。其中,为什么是右空节点呢?

2024-04-09 00:27:40 604

原创 2024.4.7力扣刷题记录-数组篇刷题记录2

心路历程简直和他说得一模一样,后面对原代码进行修改的时候,没有想到可以模拟修改的过程。多对前修改少对后修改,防止后面更麻烦。1.遍历,指针(环状替换)。时复O(n), 空复O(1)。时复O(n), 空复O(1)。3.纯粹的python切片语法。遍历, 模拟进行修改。2.一次遍历,参考快排。1.双指针, 模拟(两次遍历)注意python中翻转的方法。),自己加了一些注释。

2024-04-08 06:52:02 219

原创 2024.4.5力扣刷题记录-数组类刷题记录1

在遍历过程中动态寻找最小值,参考官方题解评论(直接相乘,但是会有溢出风险。不会,来自官方题解(

2024-04-05 22:45:14 194

原创 2024.4.(3,8,21号)力扣刷题记录-二叉树学习记录3

是 Python 3.3 引入的语法,用于简化生成器函数(generator function)中的 yield 语句的嵌套。它的作用是将一个可迭代对象(比如另一个生成器)中产生的值直接传递给外层的生成器。函数通常用于在一个序列中生成相邻的元素对。这个函数在给定一个序列时,会返回一个迭代器,每次产生相邻的两个元素组成的元组。后者是类变量,随着实例不同值相同,是同一个变量。使用pairwise函数对中序遍历后的迭代器相邻两项进行相减。),空可以不用返回。(2)中序遍历+迭代器。前序遍历,类似二分。

2024-04-03 17:05:41 452

原创 2024.4.1力扣(1200-1400)刷题记录

还有一种方法是堆,不会,现在先不写。写法2,来自评论上面评论。

2024-04-01 23:27:31 242

原创 2024.3.31力扣(1200-1400)刷题记录

首为偶数就向下取整;注意整数向上向下取整值相同。3.Counter函数1。老忘记有这函数,来自灵神题解(4. Counter函数2。

2024-03-31 23:31:18 342

原创 2024.(3.30和4.1)力扣刷题记录-二叉树学习记录2

递可以不用每次都更新v值,因为从上到下能确保最大小值就是该条路径的,而没有受其他路径影响;而归每次都需更新v值,一个节点有左右两边两条路径到达。学习一下灵神的写法,来自视频。不会,来自视频代码。不会,全都来自灵神题解(

2024-03-30 19:22:09 457

原创 2024.3.29力扣刷题记录(未完)

2.二分查找 + 前缀和。

2024-03-29 23:22:53 165

原创 2024.3.27力扣(1200-1400)刷题记录

需要注意的是,集合操作的时间复杂度通常是接近 O(1) 的,因为集合内部使用哈希表实现,能够快速进行元素的查找和插入,但在极端情况下可能会达到 O(n)(例如哈希冲突较多的情况)。海象运算符的主要作用是可以在表达式中将计算结果赋值给变量,且在同一表达式中使用这个变量。这样可以避免重复计算相同的表达式,使代码更加简洁和易读。我以为遍历时复很高,所以用的双指针。),对上述求最大小值列表部分代码进行修改。2.最小值中最大值和最大值中最小值,方法来自评论(1.遍历,时复O(n*m)。2.遍历,求最小和次小。

2024-03-27 23:34:11 405

原创 2024.3.(26,27号)力扣刷题记录-二叉树学习记录1

带你理解递归的本质!之前有一点这种想法,但是没有实现。只局限在了在归的时候进行操作,而没有想到在递的时候进行操作。(2)递归+全局变量(准确来说是非局部)时空复杂度均为O(n)。(2)递归+数学。(1)递归+字符串。(1)递归+非局部变量。

2024-03-26 21:11:30 282

原创 2024.3.25力扣(1200-1400)刷题记录

是求整数平方根(integer square root)的函数,通常用于计算一个整数的平方根并返回最大的整数部分作为结果。在某些编程语言或库中,可能提供了内置的函数来实现这一功能。整数平方根是指小于或等于给定整数的正整数平方根。例如,对于整数 16,其平方根是 4;对于整数 17,其平方根也是 4,因为整数平方根函数会返回最接近但不超过真实平方根的整数值。2.打表,方法来自灵神题解。列举出范围内的n->x的字典,再调用。分割出来的结果是含有“1”的串和空串。3.寻找“01”串。2.位掩码,来自灵神题解(

2024-03-25 18:07:51 325

原创 2024.3.(24,25号)力扣刷题记录-二分查找学习记录2

【搜索旋转排序数组【基础算法精讲 05】】 https://www.bilibili.com/video/BV1QK411d76w/?(1)排序,时复O(nlogn)(函数)或O(n)(遍历寻找)(2)二分查找,参考学习视频。

2024-03-24 22:46:01 298

原创 2024.3.22力扣(1200-1400)刷题记录

先不看绝对值,ans[i]等于ans[i-1]-nums[i-1]-nums[i]。但是由于带有绝对值,所以使用presum储存起来。而当i==0时,ans[i-1]是presum,而nums[i-1]使用pre(pre初值为0)保存,就方便了当i==0时下标超范围的情况。而presum初值为sum(nums)的原因是,减去pre和nums[0]就为ans[0]。然后在存入数组时,绝对值即可。这道题不会,来自官方题解(

2024-03-22 23:51:34 198

原创 2024.3.21力扣(1200-1400)刷题记录

1.打表,prime列表是静态列表,详情可见我的学习记录(3.分组求解,方法来自灵神题解(2.枚举,参考官方题解(4.巧妙解法,来自评论(

2024-03-21 23:27:57 187

原创 2024.3.20力扣刷题记录-字符串练习1

当字符串长为一时,无论大小写,均满足条件。如果第一个字母大写,则后面的大小写统一,即和第二个字符大小写一样;如果第一个字母小写,则后面均需小写。1.遍历,不断更新ans。(也就是横向扫描)。不会去掉其他字符,以下方法均来自官方题解(用于检查字符串是否只包含字母和数字字符。3.巧妙遍历(升级版),方法来自题解(还有看到另外的函数写法,来自题解(2.纵向扫描,代码来自官方题解。2.遍历,方法来自题解(

2024-03-20 21:44:46 265

原创 2024.3.19力扣(1200-1400)刷题记录

当n==0或1时,不用判断。n-(n&1)的目的是为了区分奇偶数,奇数减一,偶数不变。并且当n==2时,range(2,2,2)为空,index不会超。之前有想到边求最大小值边计数,但是由于最大小值数值在变,就放弃了,没有想到可以在最大小值发生改变时,同时将个数清为1。3.同向双指针(滑动窗口),时复O(n)。有想到使用滑动窗口,但是没写出来。下面为简便写法,但是相当于两次遍历。2.数学(真服了哈哈哈哈,还真没想到)。2.哈希表,时复O(n)。优化,来自灵神题解。1.遍历,时复O(n^3)。

2024-03-19 13:36:50 252

原创 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 174

原创 2024.3.18力扣刷题记录

注意:可能存在没有a或没有b的情况,所以初始化aidx为-1(a未出现,b第一次出现下标为0),bidx为n(b未出现,a最后一次出现下标为n-1)。在这个例子中,我们首先将列表 `my_list` 转换为迭代器 `my_iter`,然后使用 `next()` 函数分别从迭代器中获取下一个元素。每次调用 `next()` 函数时,它会返回迭代器中的下一个元素,直到迭代器耗尽。如果不提供默认值,而迭代器耗尽时仍然调用 `next()` 函数,则会引发 `StopIteration` 异常。

2024-03-18 16:25:19 821

原创 2024.3.17力扣刷题记录

坐标满足:主对角线i==j,副对角线i+j==n-1。2.不使用库函数,遍历求解。1.排序,时复O(nlogn),空复O(1)。1.库函数,学习该库函数知识推荐看文章(2.遍历,时复O(n),空复O(1)。时间复杂度均为O(n)。

2024-03-17 16:11:29 185 1

原创 2024.3.(16,17号)力扣刷题记录-滑动窗口学习记录

注意:这里的时间复杂度是O(n)的,而不是O(n^2)。因为循环次数和L,R移动的次数有关,但是L,R之间是没有关系的;L最多只移动n次,R也是。是相加的关系而不是相乘。我根据7视频的思路写的代码,居然超时了。仔细观察发现,我使用切片求和的话,每一次判断都要求一次,这样时间就长了。

2024-03-16 21:42:18 151 1

原创 2024.3.16力扣(<=1200)刷题记录

omg这个方法惊到我了,我虽然有想到和二进制有关,所以写的位运算,但是我没有想到转换为字符串。因此,这段代码的作用是计算将给定的整数转换为 0 需要的步数。步数的计算方法是将该整数转换为二进制表示,然后计算其长度加上 '1' 的个数再减去1。),空复为O(1)。这个方法很妙,博主不是没有想过原地构建,但是储存原数字成了问题,这个方法能够很妙的同时储存原数据和新数据。1.遍历,虽然返回数组不算在时复里面,但是还是感觉和时复O(1)的有区别。4.随机选择,注意时复期望为O(1),方法来自官方题解。

2024-03-16 20:12:28 217 1

原创 2024.3.(15,16号)力扣刷题记录-相向双指针练习

才反应过来,枚举最大边,就变成了a+b > target的题目了,就能使用相向双指针来达到目的。思路:将它一层一层地看,记录单层接水量然后相加。虽然我已经做了优化了,但是时复毕竟是O(n^2),又。当时我没有想到遍历大的数,就使用的同向双指针,后面看了灵神题解(),特别是优化部分很神。后面方法16号写(未完待续)相向双指针,参考灵神代码(1.分层遍历(但是超时了)

2024-03-15 22:26:51 159 1

原创 2024.3.14力扣刷题记录

这里直接令i=j-indexDifference,而没有遍历。是因为通过移动j来达到遍历i的效果,所以不用遍历,但是需要维护以达到不同i和j的组合。这个方法太妙了,时复为O(n)。因为字母一共有26个,可以使用一个32位二进制数储存,从而达到降低空间复杂度的目的。运用排序+指针,将绝对值转化为大于小于两个区间,同时算两个值,再进行比较。1.哈希数组,空间复杂度:O(∣Σ∣)(其中 Σ是字符集)。2.状态压缩,空间复杂度:O(1)。相向双指针,解法参考(学习一下灵神的方法(

2024-03-15 20:10:46 247 1

原创 2024.3.13力扣(<=1200)刷题记录

思路分析:我当时看到这道题第一反应是排序,下标即为个数。但是nums【j】要小于nums【i】(不能等于),且位置不能变,所以排序不行(感觉比较麻烦)。这是因为all 函数采用短路求值的方式,只要遇到一个元素为假,就会立即停止遍历并返回结果。所以该代码并不会比上一个代码运行时间长(是因为博主当时突然有这个疑问,所以特地去查了一下)。当括号内可迭代对象全为True时,all函数整体为True,否则为False;2.数学解法,时复O(n),参考官方题解下评论(2.遍历 统计数量,时复O(n)。

2024-03-13 22:55:45 384

原创 2024.3.12力扣(<=1200)刷题记录

而找公因数并不需要从1遍历到n,只需要遍历到根号n,能被整除时,除数和商均为公因数。一旦有频次相减大于0的则必有频次相减小于0的,因为所有元素总频次相等,即数组长度。另外python还可以使用Counter()函数统计词频(函数时间复杂度O(n)),是在看官方题解时看到的(另外要注意的一个点是,如果n是平方数,则会多加一次(商和除数均为根号n),所以需要判断一下。可被3整除的偶数即能被6整除的数,遍历即可。位运算的本质:每向左移动一位,即变为原来的两倍(*2)。2.遍历后比较,时复O(n)。

2024-03-12 20:45:55 385 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除