自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十八天| 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(1. 直接法,中序遍历,使用map记录每个元素出现次数,找出map中的众数,再将出现次数=众数的元素全部返回。2.双指针法,中序递归,pre指向当前节点的前一个节点,比较pre和cur的值,不断更新差值最小的值。2、后序遍历(左右中)就是天然的回溯过程,可以根据左右子树的返回值,来处理中节点的逻辑。给你一个含重复值的二叉搜索树(BST)的根节点。

2024-08-10 01:01:20 988

原创 代码随想录算法训练营第十七天| 654.最大二叉树● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;- [3,2,1,6,0,5] 中的最大值是 6 ,左边部分是 [3,2,1] ,右边部分是 [0,5]。- [3,2,1] 中的最大值是 3 ,左边部分是 [] ,右边部分是 [2,1]。- [2,1] 中的最大值是 2 ,左边部分是 [] ,右边部分是 [1]。- [0,5] 中的最大值是 5 ,左边部分是 [0] ,右边部分是 []。1.二叉搜索树定义:根节点比左子树的所有节点都大,根节点比右子树的所有节点都小。

2024-08-08 00:24:42 1354

原创 代码随想录算法训练营第十六天|513.找树左下角的●112. 路径总和● 106.从中序与后序遍历序列构造二叉树

1.本地采用迭代法的层序遍历会比较简单,每层存入二维数组队列,返回最后一层的第一个元素即可。2.若是叶子节点,判断是否targetnum-val==0,符合则返回true。不存在 sum = 5 的根节点到叶子节点的路径。由于树是空的,所以不存在根节点到叶子节点的路径。的路径,这条路径上所有节点值相加等于目标和。是同一棵树的后序遍历,请你构造并返回这颗。等于目标和的根节点到叶节点路径如上图所示。路径总和等于给定目标和的路径。和一个表示目标和的整数。是指没有子节点的节点。是指没有子节点的节点。

2024-08-04 19:51:09 750

原创 代码随想录算法训练营第十五天| 110.平衡二叉树 ● 257. 二叉树的所有路径● 404.左叶子之和● 222.完全二叉树的节点个数

1.关键在于左叶子节点的判断,父节点的左子节点存在,左子节点的左节点和右节点不存在,该子节点为左叶子节点。3.先求左子树相差的高度,再求右子树相差的高度,若其中有一个返回-1,则非平衡二叉树。递归返回值类型int,返回当前节点的高度。4.若|左-右|(绝对值)<= -1, 则中间节点高度为1+max(l,r)在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。2.终止条件:到叶子节点终止,注意叶子节点的判断。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。

2024-08-02 01:09:01 579

原创 代码随想录算法训练营第十四天|226.翻转二叉树●101. 对称二叉树● 104.二叉树的最大深度● 111.二叉树的最小深度

2.二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数或者节点数(取决于高度从0开始还是从1开始)1.二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)2.子树为空的情况需单独处理,子树为空,最小深度为0,题目需要排除空节点的情况。,所以本题中我们通过后序求的根节点高度来求的二叉树最大深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。是指从根节点到最远叶子节点的最长路径上的节点数。叶子节点是指没有子节点的节点。, 检查它是否轴对称。

2024-07-31 01:07:10 733

原创 代码随想录算法训练营第十三天|● 递归遍历 (必须掌握)● 层序遍历 ● 迭代遍历 (先放过)

3.前序遍历:先push,再traversal(left),再traversal(right)5.后序遍历:先traversal(left),再traversal(right),再push。3.每次出队列后,将元素append入数组,并将左右叶子节点入队列,size控制每层弹出数量。traversal(left),再push,再traversal(right)1.层序遍历使用队列来模拟,定义一维数组存单层节点,二维数组按层级存节点。1.前中后序指的是中间节点的前中后,即前序(给你一棵二叉树的根节点。

2024-07-30 01:55:13 732

原创 代码随想录算法训练营第十一天|● 150. 逆波兰表达式求值 ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ●栈&队列总结

待补充。

2024-07-29 03:16:18 613

原创 代码随想录算法训练营第十天| 232.用栈实现队列●225. 用队列实现栈● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项

例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。2.由两个栈来模拟队列,stackin, stackout,出队列时,将stackin中的元素全部压入stackout,在pop stackout。1.用栈解题,遍历字符串,遇到( { [则将 ) } ]入栈,遇到) } ]则出栈进行对比,有三种情况不匹配,分别处理3种情况即可。1.采用栈解题,遍历字符串中元素,同时与栈顶元素比较,相同则抵消,进行消消乐,不同则压入栈。

2024-07-29 03:06:05 890

原创 代码随想录算法训练营第九天|●151.翻转字符串里的单词●卡码网:55.右旋转字符串●28. 实现 strStr()●459.重复的子字符串●字符串总结 ●双指针回顾

待补充。

2024-07-26 00:54:18 1046

原创 代码随想录算法训练营第八天|● 344.反转字符串● 541. 反转字符串II● 卡码网:54.替换数字

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。2.双指针i,j 分别指向原s的尾部,和现s的尾部,i进行倒序遍历,遇到数字,则倒序将“number”覆盖写入s,最后i =0后中止循环。3.理解题目中剩余字符的处理,若i+k < length, 则前k个全部反转,若i+k>length,则反转i+length个元素。1.两两交换,双指针一个指向头部,一个指向尾部,定义临时变量tmp存储中间值。,从字符串开头算起,每计数至。

2024-07-24 14:28:32 1302

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

待补充。

2024-07-23 20:32:12 707

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

2.初始化一个map,map中存放已经遍历过的值和值的索引,值作为key,遍历数组nums,k,v := range nums,若target-v不在map的key中,则将v存入map,map[v]=k,k记录值的索引位置, 当找到target-v 在map中存在时,返回当前遍历数据的索引和map[target-v]3.同样的遍历t,判断t中的元素是否在map “ss”中,若不存在,则t与s不同,返回false, 若存在,则map[key]--3.判断之前sum有没有存在,可以将sum存入map。

2024-07-22 17:08:38 744

原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、链表相交、142.环形链表II、总结

待补充。

2024-07-21 02:23:56 1156

原创 代码随想录算法训练营第三天| 203.移除链表元素、707.设计链表、 206.反转链表

初始化var pre *ListNode{} 而不是 pre := &ListNode{},后面的初始化方法,会将val默认设为0。// 链表变为 1->2->3。// 现在,链表变为 1->3。2.改变当前cur的next方向后,需要有一个临时tmp指针,记录后面待处理的链表。,若第一个节点满足条件,也可直接删除,不用再单独处理第一个节点。Head为虚拟头结点,Head.next指向的是下标为0的节点。1.反转列表需要两个指针,一个指向当前,一个指向前一个数。,请你反转链表,并返回反转后的链表。

2024-07-20 02:47:35 914

原创 代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,数组总结

. - 力扣(LeetCode)1.初始化新数组new_nums,若nums全部正整数,则直接将nums[i]^2按顺序赋给new_nums即可2.若nums全部为负数,则需要将nums[i]^2按倒序赋给new_nums3.若数组包含正数和负数,采用双指针法处理,可申请left和right两个指针,分别指向nums头部和尾部,比较nums[left]^2和nums[right]^2,哪个大赋值new_nums,new_nums倒序插入注意:go语言切片初始化语法,需要有初始化长度, new_nu

2024-07-19 00:40:44 1143

原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素

示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。1.i++不是每次循环都加1,而是没找到要移除的元素是+1,循环进行nums[j] = nums[j+1]后,i位置的元素被覆盖,i位置元素还需要再比较一次,因此也不能+1。

2024-07-17 21:54:06 550

空空如也

空空如也

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

TA关注的人

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