![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码随想录
文章平均质量分 77
eggmaker
这个作者很懒,什么都没留下…
展开
-
代码随想录算法训练营第十六天| 235. 二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。原创 2024-08-05 21:25:36 · 216 阅读 · 0 评论 -
代码随想录算法训练营第十五天| 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。结点左子树中所含结点的值小于等于当前结点的值。结点右子树中所含结点的值大于等于当前结点的值。原创 2024-08-05 21:07:42 · 204 阅读 · 0 评论 -
代码随想录算法训练营第十四天| 654.最大二叉树 、617.合并二叉树、700.二叉搜索树中的搜索 、 98.验证二叉搜索树
合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。给定二叉搜索树(BST)的根节点和一个值。你需要在BST中找到节点值等于给定值的节点。给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。通过给定的数组构建最大二叉树,并且输出这个树的根节点。给定一个二叉树,判断其是否是一个有效的二叉搜索树。节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。二叉树的根是数组中的最大元素。原创 2024-08-03 19:00:02 · 155 阅读 · 0 评论 -
代码随想录算法训练营第十三天| 513.找树左下角的值、112. 路径总和、106.从中序与后序遍历序列构造二叉树
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。中序遍历 inorder = [9,3,15,20,7]示例: 给定如下二叉树,以及目标和 sum = 22。给定一个二叉树,在树的最后一行找到最左边的值。根据一棵树的中序遍历与后序遍历构造二叉树。说明: 叶子节点是指没有子节点的节点。注意: 你可以假设树中没有重复的元素。原创 2024-08-03 16:30:46 · 354 阅读 · 0 评论 -
代码随想录算法训练营第十二天| 110.平衡二叉树、257. 二叉树的所有路径、 404.左叶子之和、 222.完全二叉树的节点个数
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。给定一个二叉树,返回所有从根节点到叶子节点的路径。给定一个二叉树,判断它是否是高度平衡的二叉树。输入:root = [1,2,3,4,5,6]树中节点的数目范围是[0, 5 * 10^4]给出一个完全二叉树,求出该树的节点个数。说明: 叶子节点是指没有子节点的节点。题目数据保证输入的树是 完全二叉树。计算给定二叉树的所有左叶子之和。输入:root = [1]输入:root = []原创 2024-07-17 21:02:11 · 216 阅读 · 0 评论 -
代码随想录算法训练营第十一天| 226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、 111.二叉树的最小深度
示例: 给定二叉树 [3,9,20,null,null,15,7],给定二叉树 [3,9,20,null,null,15,7],二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。这个没什么难的,直接一个递归遍历就可以了呗。给定一个二叉树,检查它是否是镜像对称的。说明: 叶子节点是指没有子节点的节点。说明: 叶子节点是指没有子节点的节点。给定一个二叉树,找出其最大深度。给定一个二叉树,找出其最小深度。返回它的最大深度 3。返回它的最小深度 2。原创 2024-07-10 22:20:11 · 253 阅读 · 0 评论 -
代码随想录算法训练营第十天| 二叉树理论基础篇、 二叉树的递归遍历、 二叉树的迭代遍历、 二叉树的统一迭代法
最近看上去我偷懒了,但其实还真的不是,主要是事太太太多了。中期答辩、项目问题整整做到现在,但现在挤点时间把以前的补上来吧指针定义法int val;原创 2024-07-09 22:53:54 · 361 阅读 · 0 评论 -
代码随想录算法训练营第九天| 150. 逆波兰表达式求值 、 239. 滑动窗口最大值、 347.前 K 个高频元素、 总结
输入: [“10”, “6”, “9”, “3”, “+”, “-11”, " * ", “/”, " * ", “17”, “+”, “5”, “+”]给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。输入: [“2”, “1”, “+”, “3”, " * "]输入: nums = [1,1,1,2,2,3], k = 2。输入: [“4”, “13”, “5”, “/”, “+”]原创 2024-07-03 20:49:30 · 745 阅读 · 0 评论 -
代码随想录算法训练营第八天| 理论基础 、232.用栈实现队列、 225. 用队列实现栈、20. 有效的括号 、1047. 删除字符串中的所有相邻重复项
解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。队列是先进先出,栈是先进后出,要想用栈模拟队列,必然是要用两个栈,一个收纳出去的栈,一个收纳进来的栈。给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串,判断字符串是否有效。push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。原创 2024-07-02 01:03:44 · 706 阅读 · 0 评论 -
代码随想录算法训练营第七天| 151.翻转字符串里的单词、卡码网:55.右旋转字符串、28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾
[TOC](代码随想录算法训练营第七天| 151.翻转字符串里的单词、卡码网:55.右旋转字符串、28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾)原创 2024-06-30 19:00:01 · 745 阅读 · 0 评论 -
代码随想录算法训练营第七天| 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。这道题没有什么算法的感觉,更有一种控制的感觉,单纯的暴力解法应该是我最擅长的。输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]输入:[“h”,“e”,“l”,“l”,“o”]原创 2024-06-28 22:06:52 · 1129 阅读 · 0 评论 -
代码随想录算法训练营第六天| 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
示例: 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为: [ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, 0, 2] ]给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2]注意: 答案中不可以包含重复的三元组。原创 2024-06-28 19:41:33 · 900 阅读 · 0 评论 -
代码随想录算法训练营第五天| 哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是。给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。我怎么判断一个可能会无限循环的东西能不能达到我要的要求,这个是一个重点。这道题可以用一个很暴力的方法,字母异位词的本质就是统计字母的数量,然后在另一个单词中一个一个的查。输出结果中的每个元素一定是唯一的,也就是说输出的结果的去重的, 同时可以不考虑输出结果的顺序。原创 2024-06-27 00:59:56 · 858 阅读 · 0 评论 -
代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交 、142.环形链表II、总结
主要还是双指针的灵活应用,在每次看到问题的时候还是不能只想着暴力解法,多多尝试双指针的解法吧。原创 2024-06-26 00:44:59 · 965 阅读 · 0 评论 -
代码随想录算法训练营第三天| 链表理论基础、203.移除链表元素、 707.设计链表、206.反转链表
int val;1_size = 0;原创 2024-06-24 21:07:30 · 1159 阅读 · 0 评论 -
代码随想录算法训练营第一天| 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。给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。元素的顺序可以改变。原创 2024-06-21 21:11:17 · 1217 阅读 · 2 评论 -
代码随想录算法训练营第二天| 977.有序数组的平方、209.长度最小的子数组、 59.螺旋矩阵II+总结
数组的方法主要是二分法和双指针法,或是他们的结合,双指针的核心是在于在一个循环里两个指针的分工合作。最后一题需要在二刷或是三刷的时候可以自己写出来。原创 2024-06-22 17:02:00 · 871 阅读 · 0 评论