- 博客(73)
- 收藏
- 关注
原创 2024.7.13刷题记录-牛客小白月赛98(未完)
偶数加奇数为奇数,奇数乘奇数为奇数,优先选择加法,取决于奇数的个数。分为奇数多和偶数多两种情况。奇数多,则选择完加法后剩余 2 * cnt - n 个奇数,两两配对(乘法)则取余;当偶数多时,使用加法消耗完所有奇数偶数对即可,剩余 n - 2 * cnt。而两者一正一负(或0),取最大值即可。python无精度影响。
2024-07-13 22:02:56
284
原创 2024.6.29刷题记录
return处只能使用right + 1,当最后位置left==right时,经过内层whle,right和left之间还有一个数;当数组全为val时,right=-1,left = 1,综上right+1处即为答案。我想到了用dfs,但是边界写错了。当时没读懂题,原来是只考虑前k个数。2.使用字典来存储状态之间的距离。注意其中斜线的表示方法。3.每一次更新状态后需要还原。1.使用字符串存储状态。
2024-06-30 00:23:20
444
原创 2024.6.25力扣刷题记录-周赛403
博主在比赛时只过了前两题。剩下跟着灵神做,来自视频:【状态机 DP【力扣周赛 403】】 https://www.bilibili.com/video/BV1MZ421M74P/?
2024-06-25 22:20:39
513
原创 2024.6.22刷题记录-力扣周赛402跟练记录(未完)
【值域打家劫舍 树状数组【力扣周赛 402】-哔哩哔哩】 https://b23.tv/iDc49pt。
2024-06-24 00:24:36
305
原创 2024.6.23刷题记录
时复O(nlogn),空复O(1)。时复O(nlogn),通过。时复O(n),空复O(n)。时复O(n^2),超时了。
2024-06-24 00:23:43
393
原创 2024.6.13刷题记录
当时没有想到怎么保证队内全都是窗口内的元素,答案:“当队头元素在窗口的左边的时候,弹出队头”,虽然不能保证队内一直没有窗口外的元素,但是能保证使用到的队内元素(队头)全是窗口内元素。当时是有想到这个方法的,但是以为不行,一下没转过来弯。队列储存索引而不是元素,通过储存索引使我们能够快速判断元素是否出窗口。不会,思路来自题解(
2024-06-14 09:50:01
1300
原创 2024.6.9刷题记录(6.10更新)
判断边界的时候只想着有carry的情况,而没有返回无carry的情况(None)导致运行超时,修改后运行通过。将添加操作分为“完整行”、“完整数”(最后一行中)、“不完整数”(最后一格)三个部分进行处理。时复O(m + n), 空复O(m + n)。python一般不会出现溢出的问题,所以实际上并没有受到限制,题主也就并没有答到考点。题解作者使用的是左闭右开区间,博主本人二分习惯使用闭区间,所以改为了闭区间写法。时复O(log(min(m,n))),空复O(1)。不会,均来自官方题解(
2024-06-09 23:01:09
850
原创 2024.6.7力扣刷题记录-链表篇学习记录
【反转链表】 https://www.bilibili.com/video/BV1sd4y1x7KN/?和(4)的解法道理是一样的,都是根据数值的范围确定只能进位一次。(4)是从上节点的角度,而(5)是从下节点的角度。当l1,l2遍历完但有进位时,会缺少节点,最好还是使用开新的储存空间的方法。又用到了栈,又用到了头插法,又新建节点,效率不是很高。先全部入栈,弹出一个运算一次头插一次。k个节点循环的做法,此时k=2。两个为一组直接进行反转连接。
2024-06-07 23:10:30
653
原创 2024.5.30力扣刷题记录-每日一题+动态规划练习
想到了动态转移方程,没想到边界值。很妙,关于新旧数据的思维转换。之前学过,又遇到了,自己做一遍。不改变原数组,空复O(n)。不会,均来自灵神题解(不会,来自灵神题解(
2024-05-30 21:03:31
390
原创 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
283
原创 2024.5.6力扣刷题记录-二叉树学习记录5(未完)
【二叉树的层序遍历【基础算法精讲 13】】 https://www.bilibili.com/video/BV1hG4y1277i/?
2024-05-22 13:03:36
411
原创 2024.5.(17,18)力扣刷题记录-数组篇记录
我们将第一行数字进行旋转,发现它们出现在第n - 1列,即可总结到:原数组的第i行元素旋转后会出现在n - 1 - i列。同理,我们将第一列数字进行旋转,发现它们出现在第1行,即可总结到:原数组的第j列元素旋转后会出现在第j行。这个方法即是:我们举特定的一(几)整行或者一(几)整列即可得到行号和列号的变化规律。主要是要理清,变化后的数组的横纵坐标是怎么由原数组得到的。这里必须要加tolist()(转来转去效率很低)或者改变定义函数时的输出,不然会因为类型不符合而报错。
2024-05-22 12:59:02
449
原创 2024.5.21力扣刷题记录-二分算法篇
通过将范围缩小到[0, n - 2],简化结尾判断。通过使用前缀和,使数组变得有序。不会,来自灵神题解(
2024-05-22 10:33:06
449
原创 2024.5.(15,16号)力扣刷题记录-数组篇记录
博主将这个方法应用于第一题,发现运行超时了。对比后发现,第一题为矩阵而第二题为正方形。当经历一次while循环,相当于转了一圈。当为正方形时,总结束点总是为一圈的结束点;而当为矩形时,总结束点并不是一圈的结束点。当走到终点时,并没有继续走,但是边界会继续收缩,导致死循环。m + n - 1条对角线,参考官方题解(和上一道题类似,只是从取值变成了放值。去掉里面的判断,参考题解(将两过程合并,来自题解(
2024-05-17 15:28:38
291
原创 2024.5.1力扣刷题记录-数组篇记录5
2.排序,时复O(nlogn),虽然时复不满足要求。2.直接模拟(简洁版)。1.维护第一、第二、第三大值。
2024-05-02 13:41:55
345
原创 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
387
原创 2024.4.28力扣刷题记录-数组篇记录3
同样来自上面评论连接。没有想到用集合找出重复元素。不会,想到了找规律,但是没有总结出来。1.哈希表 + 数学。
2024-04-28 23:16:42
291
原创 2024.4.(22,23,28号)力扣刷题记录-二叉树学习记录4
【二叉树的最近公共祖先】 https://www.bilibili.com/video/BV1W44y1Z7AR/?(2)先序遍历,来自视频代码。(2)先序优化,来自视频代码。不会,学习一下,来自灵神题解(还有另一种写法,来自评论(
2024-04-28 21:24:14
375
1
原创 2024.4.8Morris中序遍历(线索二叉树)学习
既然递归中使用栈的原因是想记录前驱节点,那么我们只要达到记录前驱节点的目的即可不使用栈。首先,它的本质还是中序遍历。正常的中序遍历,在“递”左子树时是可以直接通过左指针到达,但是在“归”根节点的时候是没有办法直接到达的(右子树只用“递”,不用“归”)。而“归”的时候均是到达叶子节点才“归”,则可以充分利用叶子节点的左右空指针,将右空指针指向根节点,这样就可以直接“归”到根节点。其中,为什么是右空节点呢?
2024-04-09 00:27:40
826
原创 2024.4.7力扣刷题记录-数组篇刷题记录2
心路历程简直和他说得一模一样,后面对原代码进行修改的时候,没有想到可以模拟修改的过程。多对前修改少对后修改,防止后面更麻烦。1.遍历,指针(环状替换)。时复O(n), 空复O(1)。时复O(n), 空复O(1)。3.纯粹的python切片语法。遍历, 模拟进行修改。2.一次遍历,参考快排。1.双指针, 模拟(两次遍历)注意python中翻转的方法。),自己加了一些注释。
2024-04-08 06:52:02
329
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人