代码随想录
清月落孤影
把努力做到极致
展开
-
111.二叉树的最小深度
【代码】111.二叉树的最小深度。原创 2024-07-05 15:59:15 · 168 阅读 · 0 评论 -
104.二叉树的最大深度
根节点的高度就是这棵二叉树的最大深度。原创 2024-07-05 10:55:34 · 184 阅读 · 0 评论 -
101. 对称二叉树
【代码】101. 对称二叉树。原创 2024-07-05 10:00:53 · 140 阅读 · 0 评论 -
226.翻转二叉树
【代码】226.翻转二叉树。原创 2024-07-04 21:43:26 · 137 阅读 · 0 评论 -
二叉树理论基础篇
【代码】二叉树理论基础篇。原创 2024-06-22 17:21:57 · 161 阅读 · 0 评论 -
150. 逆波兰表达式求值
中序表达式:(1+2)*(3+4)转化为二叉树的格式后缀表达式其实就是二叉树的后序遍历,后序遍历的顺序是:左右中中序表达式看着舒服但是有一个明显的问题:如果想要正确地计算这个表达式的结果一定要加括号,不加括号的结果不是预期的结果,但是后缀表达式就不需要加任何括号,从头到尾遍历就可以计算出正确的想要的结果,所以后缀表达式更方便计算机做运算。计算机顺序处理不用担心优先级。计算机如何去顺序处理这个字符串就能得到我们想要的结果其实就是用栈这个数据结构。用栈来解决逆波兰表达式的计算过程。原创 2024-06-21 16:56:54 · 202 阅读 · 0 评论 -
1047. 删除字符串中的所有相邻重复项
括号匹配相邻的括号左括号右括号匹配,做一个消除的动作,或者做一个匹配的动作。这题是如果相邻的字母相同做一个消除的一个动作。这种消除规则下用栈很合适。从栈中弹出剩余元素,此时是字符串ac,因为从栈里弹出的元素是倒序的,所以再对字符串进行反转一下,就得到了最终的结果。原创 2024-06-21 11:32:56 · 153 阅读 · 0 评论 -
20. 有效的括号
【代码】20. 有效的括号。原创 2024-06-21 11:08:23 · 131 阅读 · 0 评论 -
225. 用队列实现栈
【代码】225. 用队列实现栈。原创 2024-06-21 09:54:17 · 90 阅读 · 0 评论 -
232.用栈实现队列
【代码】232.用栈实现队列。原创 2024-06-21 09:05:56 · 84 阅读 · 0 评论 -
142.环形链表II
快指针为什么一定会遇到慢指针?快指针相对慢指针每次移动一个节点,所以它两一定会相遇,而不会让快指针直接跳过它,如果快指针每次走三个节点就有可能跳过。快指针一个节点一个节点靠近慢指针,而不会让快指针直接跳过去。如何想到用快慢指针判断是都有环?如果没环,是一条直线,一个快指针,每次走的比较快,满指针在后面走的慢,快慢指针是绝对不可能相遇的,除非这个链表有环,让快指针转圈,慢指针进来这个圈,快慢指针相遇说明链表有环。快指针每次走两个节点,慢指针每次走一个节点。原创 2024-06-20 21:02:41 · 201 阅读 · 0 评论 -
02.07. 链表相交
通过两个指针 p 和 q 来遍历链表 headA 和 headB。当其中一个指针到达链表末尾时,它会切换到另一个链表的头部继续遍历。这种方法确保两个指针在同样的步数之后要么相遇在交点上,要么同时到达各自链表的末尾(即都为 null)。这种方法的关键在于两个指针在两个链表中都经历相同的步数,所以可以在链表相交时相遇。原创 2024-06-20 20:17:53 · 152 阅读 · 0 评论 -
19.删除链表的倒数第N个节点
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。原创 2024-06-20 19:26:43 · 169 阅读 · 0 评论 -
206.反转链表
【代码】206.反转链表。原创 2024-06-20 18:54:19 · 182 阅读 · 0 评论 -
344.反转字符串
如果这么做题的话,这样大家不会清楚反转字符串的实现原理了。但是也不是说库函数就不能用,是要分场景的。如果在现场面试中,我们什么时候使用库函数,什么时候不要用库函数呢?原创 2024-06-20 17:38:30 · 113 阅读 · 0 评论 -
27. 移除元素
快指针:寻找新数组的元素,新数组就是不含有目标元素的数组慢指针:指向更新 新数组下标的位置public:if(val!原创 2024-06-18 12:55:19 · 160 阅读 · 0 评论 -
459.重复的子字符串
在一个串中查找是否出现过另一个串,这是KMP的看家本领。原创 2024-06-17 10:20:38 · 397 阅读 · 0 评论 -
KMP算法
前缀表例如:aabaaf前缀表aaaaabaabaaabaa后缀表fafaafbaafabaaf最长相等前后缀a 0aa 1aab 0aaba 1aabaa 2aabaaf 0前缀表010120next prefix都是放的前缀表通常存放前缀表减1。原创 2024-06-17 09:53:27 · 210 阅读 · 0 评论 -
541. 反转字符串II
针对s,从i开始到i加k段这个距离进行反转,从i到i+k,不包括i+k。一般编程语言自己实现的库函数都是左闭右开规则。原创 2024-06-16 15:22:41 · 220 阅读 · 0 评论 -
383.赎金信
在本题的情况下,使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希标,而且还要做哈希函数,是费时的,数据量大的话就能体现出差别。题目只说了小写字母,可以采用空间换取时间的哈希策略,用一个长度范围26的数组来记录magazine里字母出现的次数。原创 2024-06-15 10:31:45 · 135 阅读 · 0 评论 -
1.两数之和
这个时候我们就要思考我们要查找的是什么,我们要查找一个元素是否出现过,我们要找的是元素是否出现过,那我们就应该把这个元素作为我们的key,这才是map的作用,map在最快的时间内去查找这个key是否在这个map里出现过。那么我们要查找的是这个元素是否出现过,那么这个元素就作为我们的key,那我们还要知道这个元素组对应的下标。因为想要找一个元素,那这个元素是否出现过,同时我们还要知道这个元素在数组里的下标,那这个时候要判断两个元素,一个是数组里面的这个数值,一个是数组里面的下标,那我们应该用什么来存放。原创 2024-06-13 22:28:02 · 341 阅读 · 1 评论 -
349.两个数组的交集
对于 unordered_map,其值类型为 int,默认值为 0。也就是说,当你访问一个在 unordered_map 中不存在的键时,C++ 会将其对应的值初始化为 0。2.unorder_set //去重。原创 2024-06-13 20:00:06 · 109 阅读 · 0 评论 -
242.有效的字母异位词
string b;cin>>a>>b;i原创 2024-06-13 10:45:00 · 406 阅读 · 0 评论