- 博客(17)
- 收藏
- 关注
原创 代码随想录算法训练营第15天|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、 98.验证二叉搜索树
需要注意的点:递归会超时,要利用二叉搜索树的特点。若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;思路:中序遍历下,输出的二叉搜索树节点的数值是有序序列。需要注意的点:需要多练习前中后序遍历的两种方法。它的左、右子树也分别为二叉搜索树。需要注意的点:情况要考虑全面。思路:遍历数组(递归和迭代)
2024-11-12 22:43:44
319
原创 代码随想录算法训练营第14天|513.找树左下角的值 、112.路径总和、从中序与后序遍历序列构造二叉树
思路:递归 1.判断数组是否为空 2.若不为空,取后序数组的最后一个节点 3.找到该节点在中序数组的位置 4.切割中序数组为左子树和右子树 5.切割后序数组,切成后序左数组和后序右数组 6。思路:层序遍历找每层的第一个值。需要注意的点:边界检查。
2024-11-01 22:54:43
290
原创 代码随想录算法训练营第13天|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和 、222.完全二叉树的节点个数
方法3:(利用完全二叉树的定义)思路:递归法,要多练习递归法。需要注意的点:终止条件的确定。思路:后序遍历 递归法。方法1:(层序遍历)方法2:(递归遍历)
2024-09-11 17:17:43
402
1
原创 代码随想录算法训练营第12天|226.翻转二叉树、101. 对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度
思路:后序遍历,递归遍历,分为内侧外侧去比较。方法1:(层序遍历)
2024-09-10 22:09:08
384
原创 代码随想录算法训练营第11天|递归遍历、迭代遍历、统一迭代、层序遍历
思路:使用栈的方法,中序和前序有很大区别。需要注意的点:后序遍历的结果需要反转一下。
2024-09-10 17:34:08
325
原创 代码随想录算法训练营第11天|150. 逆波兰表达式求值、 239. 滑动窗口最大值、347.前 K 个高频元素
需要注意的点:注意栈是先进后出,要注意出栈时的运算顺序。要注意如何遍历栈中元素。需要注意的点:对堆的理解,map的表示,priority_queue的用法,如何遍历map和堆。思路:map统计元素出现频率,小顶堆留下k个频率最大的元素。需要注意的点:c++deque的用法,面向对象编程的规则。
2024-09-08 20:44:47
510
原创 代码随想录算法训练营第十天| 232.用栈实现队列 、 225. 用队列实现栈 、20. 有效的括号、 1047. 删除字符串中的所有相邻重复项
需要注意的点:当遇到右括号时,在 st.top() 上的判断缺少一个条件,即在检查 st.top() 之前,应该确保栈不为空,否则会导致访问空栈的问题。需要注意的点: C++ 中标准库的 queue 没有 peek() 方法,而是使用 front() 方法来获取队首元素。需要注意的点:栈的输出是后进先出,需要反向一下。方法2:(另一种写法)
2024-09-06 11:57:45
388
原创 集成模型的学习|Bagging、Boosting、Stacking
这个算法展示了 CatBoost 的训练过程,核心思想是在每次迭代中构建一棵新树,基于梯度信息更新模型,最终通过多棵树的加权组合得到最终的模型预测值。CatBoost 的独特之处在于通过多次随机排列和特殊的树构建策略,提升了模型的稳定性和泛化能力。CatBoost 原理解释及主要算法图分析catboost参数详解及实战(强推)首先通过自然梯度计算修正的梯度方向。然后,使用基学习器拟合伪残差。接下来,通过优化找到适当的缩放因子。最后,逐步更新模型的分布参数。
2024-08-23 15:43:55
532
原创 缺失值插补法|多重插补、回归插补、贝叶斯插补
缺失值是连续的,即定量的类型,才可以使用回归来预测。**似然函数:**基于已知的数据(即所有学生的语文和英语成绩,以及部分学生的数学成绩),我们构建似然函数,描述观测数据与模型参数之间的关系。**先验分布:**我们对线性模型的参数(如系数和截距)设定先验分布,通常选择共轭先验,如正态分布或t分布,以简化计算。:首先,算法会对每个变量的缺失值进行初步估计,这可以通过简单的方法如均值插补或中位数插补来完成。**缺失值估计:**最后,对于每个缺失的数学成绩,我们从后验分布中抽样,以得到缺失值的估计。
2024-08-03 18:45:14
5003
原创 代码随想录算法训练营第九天|151.翻转字符串里的单词、卡码网:55.右旋转字符串
思路:将整个字符串翻转,删除多余空格,将每个单词再反转一遍。使用快慢指针来判断是否有多余空格。思路:现将所有字符都翻转,然后翻转前n个数,再翻转后面所有字符。
2024-07-15 18:00:45
227
原创 代码随想录算法训练营第八天|344. 反转字符串、541. 反转字符串 II、54. 替换数字(第八期模拟笔试)
思路:更改字符串的长度,从后往前判断每一个字符。思路:以2k为一个单位来进行讨论。
2024-07-15 10:29:25
335
原创 代码随想录算法训练营第七天|454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
思路:利用字典的存储功能,计算出前两个数组里的元素之和,存放到字典里,后两个数组的元素之和的相反数如果能在字典里找到,说明可以找到四个数组中的元素加起来等于0。计算出现的次数即可。思路:在三数之和的基础上再嵌套一层for循环,并注意target这个变量的范围。思路:双指针法,再用set去除重复元素。需要注意的点:判断时间最优的哈希表。思路:类似有效的字母异位词。
2024-07-12 11:18:45
624
原创 代码随想录算法训练营第六天|242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
注意:要考虑到map的key和value的指定,查找key需要遍历字典,查找value可以直接使用函数map.find(value)思路:使用字典存储下标及对应的值,从字典里查询有无需要的元素。std::unordered_map的效率更高。思路:观察有的数字是否重复出现,重复出现说明结果到达不了1。思路:使用record存储字母出现次数。
2024-07-10 16:13:00
537
原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、 面试题 02.07. 链表相交、142.环形链表II
使用快慢指针,快指针每次走两步,慢指针每次走一步。当链表为循环链表时,fast一定先进入环内,当slow进入环内的时候,fast和slow都在环内移动,相对于slow来说,fast每次都移动一步,因此fast和slow一定会在某处相遇,此时跳出循环,判断循环节点。思路:使用双指针,快指针走n步,然后快慢指针一起走,直到快指针指向尾部,此时慢指针指的即为需要删除的节点。思路:将两个链表的末端对齐,较长链表先走到两个链表差值的位置,然后同时移动两个链表上的指针,当两个指针相等时,返回这个值,否则返回null;
2024-07-07 17:12:36
782
原创 代码随想录算法训练营第三天| 203.移除链表元素、707.设计链表、206.反转链表
单链表的节点由两个部分组成,一部分存放数据,另一部分存放下一个节点数据的指针,最后一个节点指向的指针为NULL。int data;//Single_List_Node * 表示一个指向该结构的指针Single_List_Node(int x):data(x),next(NULL){}//节点的构造函数,用于初始化该对象的成员变量//一开始的每个节点的next指针都指向NULL// 将第一个节点的next指向第二个节点// 将第二个节点的next指向第三个节点= NULL) {
2024-07-06 17:30:22
879
原创 代码随想录算法训练营第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
接前一天的快慢指针,当元素是目标值时,慢指针停在原地,快指针指的数代替当前值,当慢指针指着的数不是元素值,慢指针继续增加,直到快指针遍历完数组,慢指针的值即为删除元素后的长度。public:=val){array:由编译器自动管理内存,在栈上分配内存。vector:由STL库管理内存,通常在堆上分配内存。如果需要固定大小和高性能,可以选择array。如果需要动态调整大小和灵活操作,可以选择vector。
2024-07-04 15:09:10
721
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人