代码随想录
文章平均质量分 74
报了个卡尔的代码训练营,花钱买罪受
9677
这个作者很懒,什么都没留下…
展开
-
102.二叉树的层序遍历,199. 二叉树的右视图
层次遍历需要借助队列,先入先出的优势,在上一层出队后下一层节点入队,这个是要理解并记住的 queue 别忘了队列里存放的是树的节点。每一层都是一个循环,然后,队头节点出队(出队的同时值要入数组中)后其左右孩子入栈,如果有的话(所以得先判空)果然学算法先要掌握大体上的动画,就是大概上的意思,抽象的现象的描述行为,然后开始进入循环,循环条件是队列非空,即不断遍历队列中的元素,还有在一些算法中的常用小操作,都是要再刷算法题的时候总结的。输出:[[3],[9,20],[15,7]]原创 2024-03-18 16:06:56 · 394 阅读 · 0 评论 -
代码随想录145. 二叉树的后序遍历
后序遍历的顺序是:左-右-中,即先访问左子树,然后访问右子树,最后访问根节点。这个顺序在递归方法中很直观,但在迭代方法中实现起来就比较复杂,因为迭代过程中需要一个机制来记住每个节点的访问状态。为了简化这个问题,我们可以巧妙地使用栈和最后的反转操作来达到目的。给前序遍历的代码改改,改成根右左,然后再把数组里的结果反转一下 就成了左右根。不明白的可以在演算纸上试试,真的可以通过反转就全部转过来。这也许就是二叉树遍历的神奇吧。原创 2024-03-16 20:40:58 · 380 阅读 · 0 评论 -
力扣94. 二叉树的中序遍历
我们使用一个栈来帮助我们模拟这个过程,因为栈具有“后进先出”的特性,可以帮助我们保持访问顺序。同时,我们使用一个指针cur来遍历树。原创 2024-03-16 17:40:21 · 479 阅读 · 0 评论 -
力扣 144 二叉树的前序遍历,迭代法,用栈实现
根据栈的特性,先将右结点入栈然后再入栈左节点,才能够先访问左节点,但是在要节点入栈之前得先检测该节点是否为空。思路就是 根据根左右,先将根入栈,然后访问根,然后根出栈,原创 2024-03-16 16:23:14 · 426 阅读 · 1 评论 -
力扣 347前k个高频元素
在C++中,当你使用。原创 2024-03-12 16:50:29 · 851 阅读 · 0 评论 -
150逆波兰表达式求值
还有这个就是栈的类型是int型,输入的字符串的类型是char,那么运算符号存的时候就char型,那这样在进行运算并计算结果的时候,就发现这个运算能表示成 r2s[i]r1吗,当然不行了,但是这个题里用的是vector,这是动态数组,而每一个数组元素的类型是一个字符串(string类型),那么就得用双引号了,应该用双引号,不应该用单引号,我一开始用的单引号,如果这个s是string类型的话,就是char类型,就可以用单引号。后缀的很简单,遇到符号,就只需要让栈中的前两个数出栈。这个是在C++里的要求,原创 2024-02-26 17:28:16 · 342 阅读 · 0 评论 -
力扣20.有效的括号
这个学过数据结构栈的应用的基本上都会就是把字符串进栈,如果是左边的括号,无脑入栈,如果是右边的括号,那得看栈顶是不是和它匹配,如果匹配的话,一起出栈,如果不匹配,就先入栈一直到遍历完整个字符串后如果最后栈为空,那么就是有效不为空说明有匹配不上的就是无效但是我这个思路怎么说,有错误,这错误还是chatgpt给我改出来的,是由我这个代码实现的语法造成的,就是如果一开始没有左半部分(,[,{,那么栈是空的,原创 2024-02-24 19:01:22 · 560 阅读 · 1 评论 -
代码随想录 栈和队列 232.用栈实现队列
栈提供push 和 pop 等等接口,所有元素必须符合先进后出规则,所以栈不提供走访功能,也不提供迭代器(iterator)。第一问的答案 所以STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)我们常用的SGI STL,如果没有指定底层实现的话,默认是以deque为缺省情况下栈的底层结构。deque是一个双向队列,只要封住一段,只开通另一端就可以实现栈的逻辑了。首先大家要知道 栈和队列是STL(C++标准库)里面的两个数据结构。用栈模拟队列的话,得用两个栈。原创 2024-02-21 14:27:13 · 385 阅读 · 0 评论 -
代码随想录算法训练营第八天|● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串
但是上来看卡哥的那个解法自己感觉有点难,然后自己拖了好几天,然后去看了力扣官方的解析,然后觉得它上面那个先反转整个字符串,然后再逐个单词去反转,然后去掉句子首尾的空格是最适合的。一个单独的字符对象必须用函数内已经存在的字符串对象来构成,可以用operator拼接组成新的字符串对象,但是前提必须是用已经存在的字符串对象构成的,这好像涉及到了面向对象的问题。我还以为得-1呢,用begin()指向的数组元素的第一个位置,而end()指向的是数组的最后一个元素的下一个位置!i指向新长度的末尾,j指向旧长度的末尾。原创 2023-06-17 10:19:48 · 170 阅读 · 0 评论 -
代码随想录算法训练营第七天|454题.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
所以和的出现次数也是一个要记录的值,所以就用,map,但是要保留原有的位置不用排序,那就应该选择unordered_map来作为存储{和,次数}这里就用到了如何给map的值(value)赋值的问题,就像数组一样,只不过这里的下标为键,而元素的值为值,在这里只和出现的次数。就是在利用map求某几个数之和=一个确定的数的时候,要学会分组,然后通过反向求解如做差来表示已知map里的值,看map里面有没有。有点割裂的意思,把这个分成了两部分,但题目统计的是出现的次数,那么可能和也有出现相同的但是是不同的值组成的.原创 2023-04-23 22:49:21 · 182 阅读 · 1 评论 -
代码随想录算法训练营第六天|242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和
哈希表是根据关键码的值而直接进行访问的数据结构所以数组就是哈希表盗个卡哥的图然后就是哈希的方法看了看,跟第二个暴力也差不多少啊。。。。就是处理方法不是比对相等,而是比对数组里的元素是否为0这算是用数组下标来访问数组的元素,我想关键字是字符串的字符的值吧。把字符映射到数组也就是哈希表的索引下标上public :i ++) {i ++) {} };原创 2023-04-23 00:30:30 · 451 阅读 · 0 评论 -
代码随想录算法训练营第四天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II
接了个活,搞得我今天没赶上打卡,根本没时间写。原创 2023-04-09 23:57:13 · 1735 阅读 · 0 评论 -
代码随想录算法训练营第三天|链表:203.移除链表元素 707.设计链表 206.反转链表
代码随想录算法训练营第三天|链表:203.移除链表元素 707.设计链表 206.反转链表原创 2023-04-07 20:43:20 · 2316 阅读 · 0 评论 -
代码随想录算法训练营第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
代码随想录算法训练营第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II原创 2023-04-06 20:40:28 · 2501 阅读 · 0 评论 -
代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
力扣代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素对y总的代码有了更深的理解,说明,算法二刷是必须的,最好是过一段时间再二刷原创 2023-04-05 13:23:50 · 2600 阅读 · 0 评论