自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 层序遍历学好了可以解十道题

如果是求每一层平均值,在for循环外计算一下就好。如果不是完全二叉树,也没有影响,代码和上面一样.如果是求最大值也是修改一下就好。

2024-08-05 01:13:51 279

原创 代码随想录算法训练营第十三天| 二叉树递归、迭代、层序遍历

写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统也是用一个栈的结构来保存每一层递归的信息,如果递归没有终止,操作系统的内存栈必然就会溢出。确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。迭代法把根节点放入栈中,然后再取出,然后按照遍历顺序压入栈中,然后循环处理知道栈空为止。确定每一层递归需要处理的信息。在这里也就会重复调用自己来实现递归的过程。

2024-08-01 16:33:55 289

原创 代码随想录算法训练营第十一天| 150. 逆波兰表达式求值 239. 滑动窗口最大值

150. 逆波兰表达式求值。

2024-08-01 15:23:54 217

原创 代码随想录算法训练营第十天| 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项

我参考了题解的写法,如果是左括号,就把对应的右括号压入栈。在遍历时,如果栈已经空了或者栈头括号不匹配,直接输出False,如果没有以上情况,把栈头的括号删了。push的时候只需要把数据放入输入栈,pop的时候,如果输出栈为空就把进栈数据全部导入进来,再从输出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据。按照代码随想录的题解,可以通过两个队列实现栈,这种方法是为了加深印象,更好的理解栈和队列。用栈来模拟队列,需要两个栈,一个输入栈一个输出栈。如果进栈和出栈都为空的话,说明模拟的队列为空。

2024-07-28 23:16:06 262

原创 代码随想录算法训练营第九天| 151.翻转字符串里的单词 右旋字符串 28. 实现 strStr() 459.重复的子字符串

这道题是KMP算法,KMP算法当时自学的时候很难搞懂,只知道是查找子串的一个算法,这回也没太搞懂多少直接就用了……这个题不难,但是我搞了一会,主要是.split()函数不熟悉,代码如下所示。这里的关键在于理解 Python 中的切片语法。,使得开头和结尾相邻,可以检测是否有重复的模式。之后,将这两部分连接起来形成一个新的字符串。,那么默认从序列的开始位置取值;可能是由一个更短的子串重复组成的,返回。这样做的目的是为了创建一个循环版本的。28. 实现 strStr(),则一直取到序列的末尾。

2024-07-28 01:15:24 217

原创 代码随想录算法训练营第八天| 344.反转字符串 541. 反转字符串 替换数字

这道题难点不是思路,难点是我对字符串的处理太生疏了……每次刷题时字符串的处理都是很耗时间,这和我的熟练度有密切关联。我将题目做好以后运行,答案错的稀碎。这道题和上道题有一个点要注意的就是,python对字符串的处理。因为字符串是不可变类型,所以。要用list()函数来将字符串转化为列表来处理。最后通过join方法来拼接字符串。不在赘述了,有些题目如果考察的是库函数的方法,那就尽量别直接调用库函数了。

2024-07-24 20:52:40 241

原创 代码随想录算法训练营第七天| 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和

这道题由于要返回不重复的三元组,使用字典的话去重比较麻烦。因为在一开始我们对数组进行了排序,我们在遍历的时候,i 可以跳过一些已经大于0的,因为不管怎么加,在i右边的都是大于0的数字。这道题由于是直接算有多少种相加的可能,所以不涉及去重的操作,用字典的键值对统计即可。另外为了减少运算复杂度,可以1,2数组求和,再减去3,4数组的求和为0,找到这种情况并记录次数,就可以解题,类似于力扣1题两数之和的思路。先把被查找的按照字母出现的次数写成字典,然后在查找的时候能查到且该字母数量大于0的减1.直到搜索完成。

2024-07-23 15:22:41 219

原创 代码随想录算法训练营第六天| 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

通过做这个题,我才知道python的列表也可以用 in 来判断有没有元素,所以有时候哈希表可以用数组来代替(上面有些用键值对写的纯纯浪费空间)因为他是力扣第一题,所以成为了每个人入坑必刷,以前不懂,现在懂了怎么写了。写两个字典然后对比一下就可以。这个纯是享受python比较好写的福利了……242.有效的字母异位词。349. 两个数组的交集。

2024-07-22 21:20:18 160

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

这道题双指针法比较好理解,让快指针移动n个节点,然后快慢指针一起移动,当快指针指向空节点时,慢指针就可以指到要修改的节点了。要删除慢指针指向的节点,必须要指向该节点的前一个节点(删除链表节点那里讲过)。这样慢指针就指向要修改的指针的前一个节点了。如果以以上顺序开始,1节点,3节点都要提前存一下,不然dummy_head的下一个节点指向2的时候,原本dummyhead->1的指针就断了;2)将cur节点指向两两交换的第二个节点(2节点),在将2节点指向两两交换前的节点(1)节点,在将1节点指向下一个要。

2024-07-22 15:06:40 275

原创 代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表

移除链表元素是我早期刷题接触到的题目,当时对链表这个数据结构不是很熟悉,很多方法都是硬背下来的。但是在回过头来看,现在的理解清晰了许多,将链表的索引与数组的索引进行类比理解,他们有相通之处也有不同的地方。这样对链表的处理就清晰了很多。所以还是要多练才行呀。移除链表元素,可以用虚节点作为头结点,这样就避免了第一个元素移除时,要重新创建头结点的过程。反转链表是很容易出错的一个题,也是我实习面试的时候遇到过的题目,所以印象十分深刻。注释里面是递归法,思路是一样的。

2024-07-21 23:40:23 221

原创 代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小子数组、59.螺旋数组II

这道题中需要设置一个offset,offset的作用除了作为大循环的次数,还可以作为一圈的偏移量,因为没过一圈,起始位置startx和starty要往斜下方缩一下,offset代表每个小循环终点的偏移量,每循环一大圈,也要缩一格。n为偶数的时候,大圈走n的一半就能全部走完,n为奇数的时候,大圈走n的一半,最后还剩中间一格,所以n为奇数的时候,中间那个格子直接赋值就行。而且题目中数组是按顺序排列的,输出的结果也是按顺序排列的,运用双指针可以省略一次for循环,使得时间复杂度为O(n)。,这道题循环不变量是。

2024-07-18 21:46:34 379

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

今天是第一天跟随大家一起刷题,我自认为我的算法基础不够牢固,虽然已经工作了,但是还是有很多的机会用到数据结构的知识,于是决定将秋招春招没刷够的题捡回来。由于我发现快指针在这道题类似于遍历数组的每个索引的作用,因此我选择了用for in循环来代替快指针的赋值功能。我按照代码随想录的建议,第一遍只刷一种方法并且学会。因为之前在学习判断环形链表的时候,学过快慢指针,虽然这道题题解没有细讲快慢指针,但是他点出了精髓就是。的方法去做,一切都很丝滑,直到循环中的一个细节没注意导致死循环。

2024-07-17 23:33:12 168

空空如也

空空如也

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

TA关注的人

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