- 博客(16)
- 收藏
- 关注
原创 代码随想录算法训练营第18天|513.找树左下角的值/112.路径总和/106.从中序和后序遍历序列构造二叉树
513.找树左下角的值最底层最左侧的节点的值 层序遍历:迭代法 递归+回溯:如何找到左下角? 最后一行:深度最大的叶子节点 最左侧:前、中、后序都可(不用处理中节点)(只要优先遍历左边即可)112.路径总和不涉及中节点的处理逻辑:前、中、后序都可 遇到一个节点相减,到叶子节点减为0了,就找到了 回溯:把减去的节点加回来,再去遍历右子树106.从中序和后序遍历序列构造二叉树后序数组为空,空节点 后序数组中最后一个元素为节点元素 寻找中序数组位置作为切割
2024-03-23 16:45:01 177
原创 代码随想录算法训练营第17天|110.平衡二叉树/257.二叉树的所有路径/404.左叶子之和
平衡二叉树:二叉树中任意一个节点的左、右子树的高度差小于等于1求高度:后序遍历。
2024-03-23 14:30:03 178
原创 代码随想录算法训练营第16天|104.二叉树的最大深度/111.二叉树的最小深度/222.完全二叉树的节点个数
根节点的高度就是二叉树的最大深度(所以用后序)
2024-03-21 17:25:19 244 1
原创 代码随想录算法训练营第15天|二叉树的层序遍历/226.翻转二叉树/101.对称二叉树
二叉树的层序遍历队列:放入一个元素,弹出它时,将它的左、右孩子加入队列 队列的size为每一层的元素个数 结果用二维数组保存 力扣题目:102、107、199、637、429、515、116、117、104、111226.翻转二叉树交换指针,而不是交换数值 遍历方式:用前序和后序;用中序比较绕、不方便 递归:参数:传入的根节点 返回值:根节点 终止条件:碰到空节点停止遍历 单层处理逻辑: 交换节点的两个孩子 再向左、向右去遍历101.对称二叉树
2024-03-20 19:53:35 264 1
原创 代码随想录算法训练营第14天|二叉树的递归遍历/二叉树的迭代遍历/二叉树的统一迭代
144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历。
2024-03-19 09:39:59 278 1
原创 代码随想录算法训练营第13天|239.滑动窗口最大值/347.前K个高频元素
239.滑动窗口最大值滑动窗口像一个队列 向右滑一位时:抛弃的元素就pop(),新加入的元素就push() 自定义队列: 只维护有可能成为最大值的值 加入一个数时,弹出它前面比它小的所有数 这样求最大值即是队头的元素 347.前K个高频元素map: key:每个元素 value:每个元素出现的次数 但没必要对每个元素都进行排序 只求前K个:大顶堆、小顶堆 堆里面最终只剩下前K个高频元素:小顶堆
2024-03-18 15:00:33 161
原创 代码随想录算法训练营第11天|20.有效的括号/1047.删除字符串中的所有相邻重复项/150.逆波兰表达式求值
20.有效的括号遇到左括号,把对应右括号入栈 遇到右括号,判断是否与栈顶括号相等 剪枝:括号数量为奇数时,则一定不匹配 三种无效的情况:
2024-03-16 15:40:54 230 1
原创 代码随想录算法训练营第8天|344.反转字符串/541.反转字符串2/54.替换数字/151.翻转字符串里的单词 /55.右旋转字符串
都是 2k、2k 地操作,不写 i++,而是 i += 2k,让 i 以 2k 的距离去移动,反转前 k 个。(同向双指针不会改变顺序,相向双指针会改变顺序)先反转整个字符串,再反转每个单词。(第1天数组中的27.移除元素)151.翻转字符串里的单词。慢指针:保留的元素更新在哪里。单独处理:首单词前不用空格。卡码网:54.替换数字。快指针:哪些元素要保留。
2024-03-13 19:51:40 178
原创 代码随想录算法训练营第7天|454.四数相加/383. 赎金信/15.三数之和/18.四数之和
只需一个map:遍历a+b:存入map中,a+b的值(key)以及出现的次数(value)遍历c+d:判断"0 -(c+d)"在map中出现过没有。
2024-03-12 11:34:15 401 2
原创 代码随想录算法训练营第6天|242.有效的字母异位词//349.两个数组的交集/202.快乐数/1.两数之和
数组”第1个字符串:对应的频率+1第2个字符串:对应的频率-1最后数组中元素全是0则互为字母异位词。
2024-03-12 09:53:25 102 1
原创 代码随想录算法训练营第3天| 203.移除链表元素/707.设计链表/206.反转链表
太绕了暂时没搞明白,熟练掌握双指针再掌握循环;循环是根据双指针来写的。法一:双指针,一个指针指着结点,另一个指针指着前一个结点。
2024-03-08 19:21:02 188
原创 代码随想录算法训练营第2天| 977.有序数组的平方/209.最小长度的子数组/59.螺旋矩阵
错误原因:result.reverse()不会创建新的列表。
2024-03-07 16:59:01 298
原创 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
关键:在同一代码中,搜索区间的定义要一致 (合法区间)(循环不变量原则)决定: (1)right = numsize ; left <= right ; left = middle + 1 ; right = middle - 1 (2) right = numsize - 1 ; left < right ; left = middle ; right = middle1.暴力解法:嵌套循环时间复杂度:O(n^2)空间复杂度:O(1)2.双指针法:时间复杂度:O(n)空间复杂度:O(1)改进:题目说
2024-03-06 20:38:15 344
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人