03 2023 档案

摘要:题目 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 示例 1: 输入:root = [5, 阅读全文
posted @ 2023-03-31 15:02 铜锣湾陈昊男 阅读(7) 评论(0) 推荐(0)
摘要:题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = 阅读全文
posted @ 2023-03-30 11:38 铜锣湾陈昊男 阅读(5) 评论(0) 推荐(0)
摘要:kmp最详细的讲解 https://zhuanlan.zhihu.com/p/151421571 # 题目 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 hayst 阅读全文
posted @ 2023-03-29 13:40 铜锣湾陈昊男 阅读(12) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科:中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例 1: 输入:root = [3,5,1 阅读全文
posted @ 2023-03-28 18:55 铜锣湾陈昊男 阅读(10) 评论(0) 推荐(0)
摘要:题目 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。 如果树中有不止一个众数,可以按 任意顺序 返回。 假定 BST 满足如下定义: 结点左子树中所含节点的值 小于等于 当前节点的值 结点右子树中所含节点的值 大于等于 当前 阅读全文
posted @ 2023-03-28 11:02 铜锣湾陈昊男 阅读(6) 评论(0) 推荐(0)
摘要:题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 示例 1: 输入:root = [4,2,6,1,3] 输出:1 示例 2: 输入:root = [1,0,48,null,null,12,49] 输出:1 思路 阅读全文
posted @ 2023-03-27 18:13 铜锣湾陈昊男 阅读(6) 评论(0) 推荐(0)
摘要:题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [2,1,3] 输出:true 示 阅读全文
posted @ 2023-03-24 10:48 铜锣湾陈昊男 阅读(3) 评论(0) 推荐(0)
摘要:题目 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root = [4,2,7,1,3], val = 2 输出:[2,1,3] 示例 2: 阅读全文
posted @ 2023-03-23 14:54 铜锣湾陈昊男 阅读(7) 评论(0) 推荐(0)
摘要:题目 给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二 阅读全文
posted @ 2023-03-22 15:19 铜锣湾陈昊男 阅读(11) 评论(0) 推荐(0)
摘要:题目 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 最大二叉树 。 示 阅读全文
posted @ 2023-03-22 11:02 铜锣湾陈昊男 阅读(9) 评论(0) 推荐(0)
摘要:题目 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3 阅读全文
posted @ 2023-03-21 18:21 铜锣湾陈昊男 阅读(11) 评论(0) 推荐(0)
摘要:题目 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点的节点。 示例 1: 输入:roo 阅读全文
posted @ 2023-03-20 17:57 铜锣湾陈昊男 阅读(11) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root = [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 思路 这道题目的关键是方法 阅读全文
posted @ 2023-03-20 16:47 铜锣湾陈昊男 阅读(10) 评论(0) 推荐(0)
摘要:题目 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 示例 2: 输入: root = [1] 输出: 0 思路 重点在于 阅读全文
posted @ 2023-03-18 13:05 铜锣湾陈昊男 阅读(6) 评论(0) 推荐(0)
摘要:题目 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root = [1,2,3,null,5] 输出:["1->2->5","1->3"] 示例 2: 输入:root = [1] 输出:["1"] 思路 递 阅读全文
posted @ 2023-03-17 14:57 铜锣湾陈昊男 阅读(10) 评论(0) 推荐(0)
摘要:题目 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 示例 1: 输入:root 阅读全文
posted @ 2023-03-16 13:02 铜锣湾陈昊男 阅读(9) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:2 示例 2: 输入:root = [2,null,3,null,4,null 阅读全文
posted @ 2023-03-16 12:05 铜锣湾陈昊男 阅读(12) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 思路 递归法:(把后序遍历为例子) 递归四部曲,首先第一步,确定函 阅读全文
posted @ 2023-03-15 13:24 铜锣湾陈昊男 阅读(10) 评论(0) 推荐(0)
摘要:题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1,2,2,null,3,null,3] 输出:false 思路 递归法 根据递归四部曲来解决,注意的是递归三部曲+自己理 阅读全文
posted @ 2023-03-14 10:27 铜锣湾陈昊男 阅读(6) 评论(0) 推荐(0)
摘要:递归的确定有三部曲,但是这里加上自己理解的再加上一步曲(以对称二叉树为例) 首先第一步曲:确定函数的作用,这一步最关键,因为你既然确定了作用,那么后面这个函数就是这个作用,即使你还没有实现(这也是自己加上的一步曲) 确定函数的作用,这一点至关重要(对于对称二叉树而言,也就是比较两个节点的数值是不是相 阅读全文
posted @ 2023-03-14 10:20 铜锣湾陈昊男 阅读(13) 评论(0) 推荐(0)
摘要:题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root = [2,1,3] 输出:[2,3,1] 示例 3: 输入:root = [] 输出:[] 思 阅读全文
posted @ 2023-03-13 18:21 铜锣湾陈昊男 阅读(5) 评论(0) 推荐(0)
摘要:题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3: 阅读全文
posted @ 2023-03-13 17:41 铜锣湾陈昊男 阅读(18) 评论(0) 推荐(0)
摘要:谁能调用谁 当一个函数存在const和非const两个版本的时候,const对象只能调用const的版本,非const对象只能调用非const版本,就不会有二义性 阅读全文
posted @ 2023-03-13 10:25 铜锣湾陈昊男 阅读(6) 评论(0) 推荐(0)
摘要:#虚表和虚指针 如果继承的class重写了virtual函数,那么它对应的函数虚指针指向的函数地址就会改变,相当于调用一个新函数 阅读全文
posted @ 2023-03-12 10:35 铜锣湾陈昊男 阅读(9) 评论(0) 推荐(0)
摘要:题目 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[3,2,1] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 思路 ##递归法:思想和前面的相同 ##迭代 阅读全文
posted @ 2023-03-10 21:44 铜锣湾陈昊男 阅读(14) 评论(0) 推荐(0)
摘要:题目 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root = [1,null,2,3] 输出:[1,3,2] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 思路 递归法:递归法的思想还是和前序遍历的思想 阅读全文
posted @ 2023-03-10 21:13 铜锣湾陈昊男 阅读(15) 评论(0) 推荐(0)
摘要:题目 示例 1: 输入:root = [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root = [] 输出:[] 示例 3: 输入:root = [1] 输出:[1] 示例 4: 输入:root = [1,2] 输出:[1,2] 示例 5: 输入:root = [1,null, 阅读全文
posted @ 2023-03-10 13:51 铜锣湾陈昊男 阅读(4) 评论(0) 推荐(0)
摘要:explicit是为了不让c++放飞自我 因为没有加的话c++会进行隐式转换,这使得程序往我们不想的方向前进。 C++ explicit 关键字 最近学习的过程中经常看到explicit这个关键字, 于是去了解了一下. 没好好读过C++ Primer的我只想感慨: "C++还会发生这样的隐式类型转换 阅读全文
posted @ 2023-03-10 10:19 铜锣湾陈昊男 阅读(21) 评论(0) 推荐(0)
摘要:题目 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1: 输入:ransom 阅读全文
posted @ 2023-03-09 12:03 铜锣湾陈昊男 阅读(8) 评论(0) 推荐(0)
摘要:题目 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < n nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0 示例 1: 阅读全文
posted @ 2023-03-08 12:19 铜锣湾陈昊男 阅读(13) 评论(0) 推荐(0)
摘要:直接上代码: #include<iostream> #include<string.h> #include<vector> #include<unordered_set> using namespace std; template<class T>//单个函数参数的print void print( 阅读全文
posted @ 2023-03-08 10:51 铜锣湾陈昊男 阅读(13) 评论(0) 推荐(0)
摘要:题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2 阅读全文
posted @ 2023-03-08 00:50 铜锣湾陈昊男 阅读(7) 评论(0) 推荐(0)
摘要:题目 长编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 tr 阅读全文
posted @ 2023-03-07 20:47 铜锣湾陈昊男 阅读(10) 评论(0) 推荐(0)
摘要:题目 给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] 示例 2: 输入:nums1 = [4,9,5], num 阅读全文
posted @ 2023-03-06 13:52 铜锣湾陈昊男 阅读(6) 评论(0) 推荐(0)
摘要:题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = " 阅读全文
posted @ 2023-03-06 13:01 铜锣湾陈昊男 阅读(7) 评论(0) 推荐(0)
摘要:题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 阅读全文
posted @ 2023-03-05 19:08 铜锣湾陈昊男 阅读(10) 评论(0) 推荐(0)
摘要:题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 示例 1: 输入:inte 阅读全文
posted @ 2023-03-05 01:28 铜锣湾陈昊男 阅读(9) 评论(0) 推荐(0)
摘要:智能指针的内部结构实现 智能指针内部一定会有这俩个函数,operator*()以及operator->()函数 特别理解内部的->在变换为智能指针之后的用法,sp->其实就是相当于px,px本身就是一个指针,所以才有后面px->method();的方法的实现 阅读全文
posted @ 2023-03-03 10:52 铜锣湾陈昊男 阅读(7) 评论(0) 推荐(0)
摘要:题目 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1 阅读全文
posted @ 2023-03-02 15:04 铜锣湾陈昊男 阅读(5) 评论(0) 推荐(0)
摘要:题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2], n = 1 输出: 阅读全文
posted @ 2023-03-02 15:02 铜锣湾陈昊男 阅读(12) 评论(0) 推荐(0)
摘要:题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head = [1,2,3,4] 输出:[2,1,4,3] 示例 2: 输入:head = [] 输出:[] 示例 3: 输入:head = 阅读全文
posted @ 2023-03-01 22:13 铜锣湾陈昊男 阅读(9) 评论(0) 推荐(0)
摘要:题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 思路 双指针法,前后一个指针 阅读全文
posted @ 2023-03-01 17:53 铜锣湾陈昊男 阅读(5) 评论(0) 推荐(0)
摘要:转换函数:将分数这个类转换成小数的形式的转换函数 #include<iostream> using namespace std; class Fraction { public: Fraction(int num, int den) : m_numerator(num), m_denominator 阅读全文
posted @ 2023-03-01 11:02 铜锣湾陈昊男 阅读(9) 评论(0) 推荐(0)