自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (补卡)代码随想录算法训练营第十六天 | 104.二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点数.

的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。收获:要理解完全二叉树和二叉树的区别,完全二叉树就是除了最后一层可以残缺,以上树枝必须是满的二叉树。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。给定一个二叉树,找出其最小深度。叶子节点是指没有子节点的节点。,求出该树的节点个数。

2024-02-02 10:28:29 322

原创 (补卡)代码随想录算法训练营第十五天 | 二叉树的层序遍历、226. 翻转二叉树、101.对称二叉树.

第一印象:我对于这道题的理解是层序遍历,取最右边节点的值,遍历的时候node节点是一只更新的,直到遍历到这一行最后一个节点为止,所以只需要在遍历一层后,在result中添加node的值即可。我的想法是用栈先进后出的特性也是可以做到的(应该),由于时间比较赶没有尝试,二刷再尝试吧。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。,其所有叶子节点都在同一层,每个父节点都有两个子节点。第一印象:层层遍历,用队列先进先出,每个节点再指向左右两个节点。(即逐层地,从左到右访问所有节点)。

2024-01-26 16:40:52 593 1

原创 (补卡)代码随想录算法训练营第十四天 | 144/145/94. 二叉树的前/中/后序遍历、二叉树的迭代遍历.

今日小结:说真的欠的实在是太多了,最近也很忙倒是真的,我希望gap的这段时间能够沉下心来学习,计算机是个很卷的地方,我觉得要摆正心态。看完讲解:清晰明了,注意点是写递归的时候思路要清晰,我觉得也是需要反复练习的。第一印象:不会,二叉树是我的知识盲区,一刷属于是扫盲了。

2024-01-18 14:49:57 345 1

原创 (补卡)代码随想录算法训练营第十三天 | 239. 滑动窗口最大值、347. 前 K 个高频元素.

看完讲解:其实看完讲解的第一时间我想的这个难道不久是栈,后来我发现和栈不一样的地方在于,单调队列中其实是有两个元素的,后续在写代码的时候我也是在这个地方卡了很久,因为我想的是,后进来的数字比队列中的大了,不久删掉队列中的数了吗。其实如果后来的数字如果比队列中的数字小的话,队列是不会不加入这个数的,所以每次获取的应该是头部的元素。看完讲解:优先队列,感觉和滑动窗口的最大值有点异曲同工。第一印象:没什么思路,想的是暴力双for法,但是在leetcode上是过不了的。的滑动窗口从数组的最左侧移动到数组的最右侧。

2024-01-11 22:52:25 354 1

原创 (补卡)代码随想录算法训练营第十一天 | 20.有效的括号、1047. 删除字符串中的所有相邻重复项、150.逆波兰表达式求值.

第一印象:看到这道题目其实也是匹配类型的题目,我第一时间就想到了栈,我用栈做了出来但是栈在最后输出的时候会有些麻烦,因为出栈的时候是反着出,所以我改变思路用了Deque双向队列在完成了这道题目。例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。今日小结:这几道题都是对栈的拓展,加深了对于栈的理解,下次遇到栈相关的题目都不会再害怕了,当然也要经常复习。看完讲解:对于人类来说,日常的表达式更好理解,但对于计算机来说,内存大多是栈式结构,用。

2024-01-08 13:50:44 857

原创 (补卡)代码随想录算法训练营第十天 | 232. 用栈实现队列、225. 用队列实现栈.

今日小结:今天对队列的学习还是十分全面的,补全了自己很多的小知识,然后一道题的多种解答练习也是让自己更加熟悉了队列的操作,这对我来说是很好的练习和进步,希望再接再厉吧。第一印象:这是考察对栈和队列的理解和基础操作,栈是先进后出,而队列是先进先出,所以两者相互实现都需要两个栈或者两个队列。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(看完讲解:还是自己想的少了,本质上还是有区别的,有多种操作来实现。看完讲解:细节上的操作注意一下。第一印象:和上一题是相同的。

2024-01-06 23:45:20 358 1

原创 (补卡)代码随想录算法训练营第八天 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字 、151.翻转字符串里的单词、卡码网:55.右旋转字符串.

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须、使用 O(1) 的额外空间解决这一问题。第一印象:我觉得是双指针。看完讲解:想得没错这道题不算难,复习了一下异或运算符。给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。k2kkk"bacdfeg"第一印象:我觉得和是差不多的题目,只是判断条件要多一些。

2024-01-06 16:24:13 1269 1

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

看完讲解:a,即for循环最外层的遍历,去重的条件是nums[i] = nums[i -1],因为不能把后一位去重去掉,因为数组中可以有重复元素,只是数组不可重合,而a的去重在最开始的阶段,此时left和right还没开始判断,所以应当去重的是与上一轮遍历相同的数组。这道题很像,所以我是直接用哈希数组来做的,这两道题的区别在于,异位词中的元素需要完全相等。今天属于是Map映射和双指针的复习了,有很多细节需要去注意,今天的题目拿到手是有思路的,还是要多多写代码,加强代码的熟练度。,请你计算有多少个元组。

2024-01-02 23:47:09 1756

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

今日总结:今天由于是休假,也没有摸鱼,较多的题目一次性写完,实际上收获还是很大的,今天这4道题目分别是数组,Set,Map的应用,过一遍也是对各个操作语句的巩固练习。我觉得暴力解法固然没错,但是算法考的就是思维,发散的思维,这种思维是可以练的,就像高中,看到题目里有啥,我就应该想到啥啥啥,我觉得对于算法题目来说,是有共通之处的,方法其实也很简单,我们不都是天才,所以练习就是最好的选择,让自己看到一道题目的时候,脑袋里能想到相关的知识点,从而找到更优解。整数,并返回它们的数组下标。,编写一个函数来判断。

2024-01-01 22:20:22 1581

原创 (补卡)代码随想录算法训练营第四天 | 19. 删除链表的倒数第 N 个结点、面试题 02.07. 链表相交、142.环形链表II.

看完讲解:数学方法,可以推出当圈数等于1的时候,index1到入口节点的距离和头节点到入口节点的距离是一样的。圈数大于1的时候,我自己琢磨了一下抽象概念,因为fast指针相对于slow指针每次多走1,所以在slow进入环之前如果fast在环里面绕圈的话,就是相当于多绕了一圈,所以最后相遇的节点和绕的圈数无关。这道题值得反复练习,即使不能够理解,也要背出环形链表入口的结论,即相遇点和头节点都每次移动一个节点,直到相遇,该节点就是入口节点。我要做的就是在博客中记录下来,然后反复刷题,直到出现”肌肉记忆“。

2023-12-31 23:34:43 354 1

原创 代码随想录算法训练营第四天 | 24. 两两交换链表中的节点.

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。第一印象:主要是指针指向哪里和循环条件的判断。看完视频:很清晰,有很多细节去注意。

2023-12-31 00:25:00 373 1

原创 (补卡)代码随想录算法训练营第三天 | 707. 设计链表、206. 反转链表

第一印象:对于这道题的第一印象就是链表的各个接口的实现,是很基础的东西,但是又很细节,在扣代码的时候经常会报错,从而扣了好久,反复检查实际上也是细节上的错误。我觉得常见的错误在于循环终止条件,因为有虚拟头节点的存在,要反复注意范围。看完讲解:真是双指针大法好,我觉得自己还是需要多多积累,类似问题双指针十分好用,双指针迭代法非常好理解,如果画一张图的话,递归法还是需要多多理解,我想我在后期刷二叉树的时候再做加强。你可以选择使用单链表或者双链表,设计并实现自己的链表。,请你反转链表,并返回反转后的链表。

2023-12-30 23:56:26 363

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

第一想法:链表的删除在基础上是分头节点和非头节点删除,其中要注意在删除非头节点的时候,取的节点实际上是被删除节点的前一个节点,所以应该为pre.next.val == val时删除该节点,有时候会想成是pre,应该注意。没有想过虚拟头节点的方式。小结: 说实话今天有点摸鱼了,也有点忙,希望以后还是能静下心来做算法,落下的过几天会补上的。付了钱的,也算是激励自己,大家都在努力,我这种小菜鸡又有什么理由不努力呢?看过视频讲解过后:虚拟头节点让所有节点的删除统一了格式,代码整洁易懂。给你一个链表的头节点。

2023-12-30 00:10:56 338

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

第一眼的想法:第一想法肯定是暴力解法,就是把所有数先平方然后再排序,时间复杂度是O(nlogn),进阶是O(n),但是想不出来。看完讲解:双指针法果然是厉害,我以后遇到类似问题的时候可以考虑这种方法。第一眼的想法:第一想法是暴力解法,但是没考虑初始化结果为最大值。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]看完讲解:滑动窗口实际上也是双指针。如果不存在符合条件的子数组,返回。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。组成的新数组,要求也按。

2023-12-28 23:18:26 348

空空如也

空空如也

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

TA关注的人

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