- 博客(26)
- 收藏
- 关注
原创 代码随想录训练营第20天|235. 二叉搜索树的最近公共祖先、 701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
利用二叉树特性,最近公共祖先,大于其中一个小于其中一个。
2024-09-20 12:51:38
320
原创 代码随想录第36天|1049. 最后一块石头的重量 II
public://分成两堆,使得两堆的“价值”(重量)尽可能的接近//dp[j]容量为就j的时候价值尽可能的大//一共重量为n,理想情况,一半一半//但是不是,所以在一半容量的情况使得尽可能的大,则使得两边尽可能平衡int sum=0;
2024-09-18 21:09:07
172
原创 代码随想录训练营第35天|01背包
1.dp[i][j]的含义就是背包容量为【j】的情况下【0,i】种物品任意组合的最大价值2.递推公式:①不放i,j容量利用最大化 dp[i-1][j] 背包容量为j的时候,【0,i-1】种物品任意组合的最大价值②放i 取腾出i重量的背包情况下【0,i-1】种物品任意组合的最大价值的最大价值加上i的价值。
2024-09-17 17:31:52
270
原创 代码随想录训练营第34天| 62.不同路径 、63. 不同路径 II
1.利用五步走的方式不难想到dp是二维的,并且表示为到每一个格子的路径主要是初始化,初始化第一排和第一列。
2024-09-16 13:16:10
353
原创 代码随想录训练营第十八天|530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先
树的遍历是从上向下遍历的,从下到上是回溯利用双指针和中序遍历,可以升序遍历二叉搜索树。
2024-09-15 16:03:46
264
原创 代码随想录训练营第二十一天| 669. 修剪二叉搜索树 、538.把二叉搜索树转换为累加树、 108.将有序数组转换为二叉搜索树
题目链接/文章讲解:视频讲解:1.中了陷阱:不只是删去节点这么简单,只删去不符合要求的节点。
2024-09-03 10:15:13
405
原创 代码随想录训练第十七天| 654.最大二叉树 、617.合并二叉树、700.二叉搜索树中的搜索、 98.验证二叉搜索树
1.这题并不难,和昨天那道题思路差不多,找到根节点,分割数组,递归,返回节点,赋值给节点的左右指针。
2024-08-30 13:42:14
257
原创 代码随想录训练营第16天|513. 找树左下角的值、112.路径之和、106. 从中序与后序遍历序列构造二叉树
1.可以将前序遍历的中的操作放到左和右中2.注意是大于号:depth>maxdepth一次递归一次回溯。
2024-08-29 14:59:31
409
原创 代码随想录第15天|110.平衡二叉树、 257. 二叉树的所有路径 、404.左叶子之和、 222.完全二叉树的节点个数
后序遍历:得到左子树信息,右子树信息,中进行操作赋值给该节点。
2024-08-28 15:09:28
383
原创 代码随想录训练营第十四天| 226.翻转二叉树、 101. 对称二叉树、104.二叉树的最大深度、 111.二叉树的最小深度
一般常使用后序遍历吧。
2024-08-27 16:54:05
374
原创 代码随想录训练营第十三天|理论基础 、144. 二叉树的前序遍历、二叉树的前后序迭代遍历、二叉树的中序迭代遍历、102. 二叉树的层序遍历
1.随想录有一张图描述了刷题的知识点,分类。
2024-08-26 11:10:15
744
原创 代码随想录训练营第11天| 150. 逆波兰表达式求值 、 239. 滑动窗口最大值
1.本题不难,数字入栈(栈为int型),遇到运算符,出栈两个字母,并进行运算,再把结果重新入栈,最后留在栈内的就是结果,注意“-”和“/”是第二个出栈的元素除以第一个出栈的元素2.stoi 函数:将字符串转成 int 整数。stol 函数:将字符串转成 long 整数。stoll 函数:将字符串转成 long long 整数。本题使用的是istringstream3.计算机可以利用栈来顺序处理,不需要考虑优先级了。也不用回退(中缀需要考虑计算的顺序括号等)了,
2024-08-24 11:03:26
1817
原创 代码随想录训练营第十天|栈与队列理论基础、 232.用栈实现队列 、 225. 用队列实现栈 、 20. 有效的括号 、1047. 删除字符串中的所有相邻重复项
栈和队列是STL(C++标准库)里面的两个数据结构。
2024-08-23 12:36:53
854
原创 代码随想录训练营第九天| 151.翻转字符串里的单词、卡码网:55.右旋转字符串
1.翻转字符串,双指针的好题目,一个是用于删除空格,一个是用于反转字符串2.本题需要删除空格,整体反转再局部反转3.删除空格,并每个单词间保存一个空格,使用双指针:一个遍历,一个填充(指向填充的位置),在填充部分可以做到这一点。①单词前插入空格(除了第一个单词)②循环输入一个单词4. 反转字符串,左右双指针,一般左闭右闭完成查找一个单词的边界,反转5.数组下一个插入位置的索引下标,即前面元素的长度。
2024-08-22 10:43:35
504
原创 代码随想录训练营第八天|344. 反转字符串、541. 反转字符串 II、 卡码网:54.替换数字
1.和链表反转一样,双指针法(用于同时操作两个元素)2.左右指针,相互交换直到中间,也可以用while(left<right)
2024-08-21 12:02:06
491
原创 代码随想录训练营第七天| 454.四数相加II 、383. 赎金信、 15. 三数之和、18. 四数之和
哈希表,查找元素,好像一般是两个集合之间,或一个元素,一个集合,如有效字母异味词、二数之和、三数之和如果使用哈希表也是,固定一个,转化为二数之和。
2024-08-20 11:27:06
634
原创 代码随想录训练营第五天|哈希表基础、 242.有效的字母异位词、349. 两个数组的交集 、 202. 快乐数 、 1. 两数之和
1.当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。2.官方解释:哈希表是根据关键码的值而直接进行访问的数据结构。哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素3.时间复杂度从枚举的O(n)到通过索引直接查询的O(1)4.哈希函数:将存放的元素映射到索引上,就可以通过查询索引下标快速判断一个元素是否在集合里。hashcode通过特定编码方式,可以将其他数据格式转化为不同的数值。
2024-08-19 11:31:37
1827
原创 代码随想录训练营第四日|24. 两两交换链表中的节点 、19.删除链表的倒数第N个节点 、面试题 02.07. 链表相交
题目链接/文章讲解/视频讲解:1.这种while的判断语句就看最后一次进入循环的是什么,这里最后进入循环的是偶数:最后两个节点(->next节点存在,->next->next节点存在),奇数不进入循环了(->next->next为空),剩一个节点不访问了。2.弄清楚指针的指向,画个图不容易错,比如cur->next变化了,之后的使用别忘了。
2024-08-17 14:09:12
2002
原创 代码随想录训练营第三天|链表理论基础、203.移除链表元素 、 707.设计链表 206.反转链表
int val;// 节点上存储的元素// 指向下一个节点的指针ListNode(int x) : val(x), next(NULL) {} // 节点的构造函数。
2024-08-16 13:59:24
497
原创 代码随想录训练营第二日|209.长度最小的子数组、59.螺旋矩阵II、区间和、总结
方法:二分法,暴力求解,双指针法,滑动窗口法,前缀表法注意:保持循环不变量。
2024-08-15 13:50:21
501
原创 代码随想录训练营第一日|704.二分查找、27.移除元素、977有序数组的平方
1.数组是存放在的的集合2.二维数组也是连续地址3.因为是连续地址,所以进行元素的增加和删除,需要对数组中的元素进行移动,保持数组地址的连续性4.数组的删除是通过覆盖来实现的5.可以通过下标访问数组内的元素,下标从0开始6.要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。
2024-08-14 11:12:36
920
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1