- 博客(19)
- 收藏
- 关注
原创 代码随想录算法训练营第二十一天|669. 修剪二叉搜索树|108.将有序数组转换为二叉搜索树|538.把二叉搜索树转换为累加树
二叉搜索树要对数字敏感一些。
2024-07-13 20:08:02 180
原创 代码随想录算法训练营第二十天|235. 二叉搜索树的最近公共祖先|701.二叉搜索树中的插入操作|450.删除二叉搜索树中的节点
3、插入操作怎么插入的?return node其实就是给叶子节点的子树插入了因为递归操作时候是不断更新左右子树的前面没插入时候不变,一旦变了那也就是插入了。1、要明确任何一个值都是可以插入在叶子节点的子节点,这样就不用考虑插入时候要不要改变结构的问题!这一行在你的递归调用之后,而这段代码应该放在递归调用之前。第二种最后node是nullptr跟原树没关系了。2、想清楚为什么返回值是TreeNode*!1、返回右子树节点时候怎么处理左子树!,你就应该立即决定是向左还是向右递归。
2024-07-11 15:54:26 290
原创 代码随想录算法训练营第十九天|530.二叉搜索树的最小绝对差|236. 二叉树的最近公共祖先
直接利用二叉搜索树的性质 左中右中序遍历求相邻差值。
2024-07-10 19:49:14 216
原创 代码随想录算法训练营第十六天|路径总和|106.从中序与后序遍历序列构造二叉树
这里是targetSum==这个叶子节点的值。这样才是构造直接bulidTree只是遍历了一遍。2、用index分左右中序的index后序也可以用。1、vector迭代器的使用。2、多想想回溯过程!
2024-07-09 11:43:17 195
原创 代码随想录算法训练营第十五天|110.平衡二叉树|257. 二叉树的所有路径|404.左叶子之和|513.找树左下角的值
编辑二叉树的最大深度和最小深度做比较,大于1的话就return false,这样会超时!优化的点就是直接int result 然后每一层记录第一个即可!3、在左右的时候 判断如果左右是-1 直接返回-1!2、在主函数里面只需看getHeight是不是-1即可。1、如果用用之前讲过的。
2024-07-04 11:12:41 444
原创 代码随想录算法训练营第十四天|226.翻转二叉树|589. N叉树的前序遍历| 101. 对称二叉树 |104.二叉树的最大深度|111.二叉树的最小深度
1、每次遍历到根节点后怎么交换左右节点?使用swap(node->left.node->right)2、深度遍历三部曲3、对递归遍历不是很清晰,return root 有什么用这里。
2024-07-02 16:27:43 155
原创 代码随想录训练营第十三天|二叉树的理论基础
1、满二叉树满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。如图所示:2、完全二叉树什么是完全二叉树?完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层(h从1开始),则该层包含 1~ 2^(h-1) 个节点。3、二叉搜索树前面介绍的树,都没有数值的,而二叉搜索树是有数值的了,。下面这两棵树都是搜索树4、平衡二叉搜素树。
2024-06-24 10:52:18 687
原创 代码随想录训练营第十二天|150. 逆波兰表达式求值|239. 滑动窗口最大值|347.前 K 个高频元素
atoi stol stoll 函数可以直接调用。怎么处理遇到的字符串默认为int这种。2、先将前k的元素放进队列!1、尝试构建自己的单调队列。1、使用哈希表+排序做。
2024-06-21 15:14:38 160
原创 代码随想录训练营第十天|232.用栈实现队列|
队列是有queue.back()的 即返回队尾元素所以 模拟top时候。1、stack中数据类型是char。2、没有考虑左括号最后多余的情况。
2024-06-18 09:32:53 210
原创 代码随想录算法训练营第九天|151. 反转字符串中的单词|右旋字符串
移除所有空格并手动添加一个空格?添加空格后直接循环到下一个空格 然后看下一个非空格。1、去空格时怎么去除前导后导的空格 字母前的空格才算?2、在反转每个单词的时候怎么精准使用reverse?去空格的时候if (j!= 0)把后面循环也包含进去了。最后反转单词的时候,==使用了=而且忽略了最后一个单词。
2024-06-17 16:18:59 231
原创 代码随想录算法训练营第六天|第454题.四数相加II|383. 赎金信|第15题. 三数之和|第18题. 四数之和
1、这个题目只需要求出数量,不需要每个元素的序号所以for循环遍历使用for(int i:nums1)即可2、4分成2+2这样复杂度就是o(n*n)代码。
2024-06-12 18:21:23 224
原创 代码随想录算法训练营第五天|242. 有效的字母异位词|349. 两个数组的交集|第202题. 快乐数|1. 两数之和
242. 有效的字母异位词1、开局初始化数组写法2、最后判断数组是否全0写法if(record==0) return true; 这样写是错误的,应该循环遍历?代码class Solution {public: bool isAnagram(string s, string t) { int record[26]={0}; for(char s1:s) { record[s1-'a']++; }
2024-06-12 11:02:57 253
原创 代码随想录算法训练营第四天|24. 两两交换链表中的节点|19.删除链表的倒数第N个节点|面试题 02.07. 链表相交|
困难:怎么循环交换,交换完之后前后连接都不变注意:使用虚拟头节点进行操作,而不是从第一个开始操作这样模拟后面的循环和第一组就会相同, 我的问题就是从1开始操作到后面发现连接有点问题弄清楚cur到底是哪个?细节:1、循环终止条件实际上是两个2、要交换后面两个节点 cur得是在两个节点之前代码。
2024-06-11 10:44:27 160
原创 代码随想录算法训练营第三天| 203.移除链表元素 |707.设计链表 |206.反转链表
问题:1、为什么要用 ListNode* tmp = cur->next;而不能直接cur->next = cur->next->next;2、如何定义虚拟头节点。
2024-06-07 16:17:05 165
原创 代码随想录算法训练营第二天| 977有序数组的平方|209.长度最小的子数组|59. 螺旋矩阵 II
5、这里break只是跳出了这个小循环,所以导致后面minlenth还是会更新为1 导致错误。2、使用minlength==INT32_MAX?4、 只用一个for循环,那么这个循环的索引,一定是表示 滑动窗口的终止位置!2、从左右开始比较一定能从最大值开始找,从中间比较就很难。1、二维数组是不是也要初始化一下,二维数组怎么初始化?2、if()条件错误 应该使用==号而不是赋值=;1、使用终止位置索引,不用考虑右边界溢出问题。3、在内部循环的时候不能直接修改x1++这种。1、提取数组本身是有序的信息。
2024-06-07 11:04:57 501
原创 代码随想录算法训练营第一天 | leetcode704. 二分查找,27. 移除元素
1、判断这是 数组有序+查找 问题2、二分法的左闭右闭区间怎么写?(要有清晰的概念)3、区分一下左闭右闭与左闭右开。
2024-06-05 16:04:20 233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人