自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 LeetCode 701 二叉树中的插入操作 HERODING的LeetCode之路

给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和 插入的值: 5你可以返回这个二叉搜索树: 4 / \ 2 7 / \ /1 3 5或者这个树也是有效的

2020-09-30 07:51:44 204

原创 LeetCode 145 二叉树的后序遍历 HERODING的LeetCode之路

给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题思路:二叉树的后序遍历,最简单的思想就是递归算法,三步走就可以轻松解决,代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *rig

2020-09-29 09:01:39 180

原创 LeetCode 117 填充每个节点的下一个右侧节点指针II HERODING的LeetCode之路

给定一个二叉树struct Node { int val; Node *left; Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。示例:输入:root = [1,2,3,4,5,null,7]

2020-09-28 07:56:00 120

原创 LeetCode 235 二叉搜索树的最近公共祖先 HERODING的LeetCode之路

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点 2 和

2020-09-27 07:56:11 134

原创 LeetCode 113路径总和II HERODING的LeetCode之路

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]解题思路:依然是一道回溯题,深度优先遍历到各个叶子节点,

2020-09-26 08:46:10 1115

原创 LeetCode 106 从中序与后序遍历序列构造二叉树 HERODING的LeetCode之路

根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3/ \9 20/ \15 7解题思路:如果给你直接画图,那么我想这样的工作会很轻松,但是通过程序构建,就没那么方便了,已知的条件如下:后序遍历最后一位是根节点中序遍历根节点两边是左右子树只要能对左右子树进行遍历,那么就能构建出最终的结果,那么获得

2020-09-25 08:25:49 171

原创 LeetCode 501 二叉搜索树 HERODING的LeetCode之路

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],1\2/2返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)解题思路:二叉搜索树的问题,那么如果中序遍历就是升序排列,

2020-09-24 08:11:23 143

原创 LeetCode 617 合并二叉树 HERODING的LeetCode之路

给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。注意: 合并必须从两个树的根节点开始。解题思路:将两个二叉树合二为一,最简单的方法就是在构建一个什么都没有的二叉树,然后将已有的两个二叉树插入进去,可以用到递归的思想,在往后递归时,要注意判断,如果出现节点为null,那么左右子树一定不存在,就无法继续递归,所

2020-09-23 08:23:20 160

原创 LeetCode 968 监控二叉树 HERODING的LeetCode之路

给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。示例 2:输入:[0,0,null,0,null,0,null,null,0]输出:2解释:需要至少两个摄像头来监视树的所有节点。 上图显示了摄像头放置的有效位置之一。提示:给定树的节点数的范围是 [1, 1000]。每个节点的值都是 0。

2020-09-22 09:10:00 346

原创 LeetCode 538 把二叉树转为累加数 HERODING的LeetCode之路

给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树:5/ \2 13输出: 转换为累加树:18/ \20 13解题思路:刚开始写这道题感觉挺疑惑的,这挺复杂的题目为什么会是简单题呢,后来仔细观察题目终于发现了,这是个二叉搜索树,那么就代表着对于每个节点,其右子节点的值一定比当前节点值大,左子节点的值一定比当前值小,那么左

2020-09-21 08:08:30 554

原创 LeetCode 78 子集 HERODING的LeetCode之路

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解题思路:同样是一道回溯的问题,首先对数组进行排列,再放入dfs中遍历,对于每个数,可以选择,也可以不选择,不选择直接跳过,选择就放入res中并继续往下,记得要有回溯的过程,代码如下:class Solution {private:

2020-09-20 07:53:05 96

原创 LeetCode 404 左叶子之和 HERODING的LeetCode之路

计算给定二叉树的所有左叶子之和。示例:3/ \9 20/ \15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。解题思路:这道题目可以有多种解法,无论是深度优先遍历还是广度优先遍历,都能得到结果,核心就是找到一个点,它存在左节点,且该节点是叶子节点,加上它的值就行,知道遍历所有结束。代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; *

2020-09-19 07:49:37 97

原创 LeetCode 47 全排列II HERODING的LeetCode之路

给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]解题思路:全排列的第二题, 依然可以选择使用dfs,执行效率也挺高,可以击败99%的提交者。思路就是不断的swap(交换),不断执行该操作,直到所有的元素都进行交换过(如果重复要去重),或者不交换,也就是把所有方案都枚举了一遍,直到交换结束把该方案放入vector中,代码如下:class Solution {public: vector&l

2020-09-18 08:31:44 153

原创 LeetCode 685 冗余连接II HERODING的LeetCode之路

在本问题中,有根树指满足以下条件的有向图。该树只有一个根节点,所有其他节点都是该根节点的后继。每一个节点只有一个父节点,除了根节点没有父节点。输入一个有向图,该图由一个有着N个节点 (节点值不重复1, 2, …, N) 的树及一条附加的边构成。附加的边的两个顶点包含在1到N中间,这条附加的边不属于树中已存在的边。结果图是一个以边组成的二维数组。 每一个边 的元素是一对 [u, v],用以表示有向图中连接顶点 u 和顶点 v 的边,其中 u 是 v 的一个父节点。返回一条能删除的边,使得剩下的图是有N个

2020-09-17 09:23:09 191

原创 LeetCode 226 翻转二叉树 HERODING的LeetCode之路

翻转一棵二叉树。示例:输入:4/ \2 7/ \ / \1 3 6 9输出:4/ \7 2/ \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。解题思路:可以是这是一道广度优先算法题目,利用广度优先算法可以更加清晰快速得到结果,其实就是逐层交换左右节点,直到没有

2020-09-16 08:11:53 177

原创 LeetCode 37 解数独 HERODING的LeetCode之路

编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 '.' 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。解题思路:首先定义三个数据结构,rows、cols为二维数组,grid为三维数组,二维数组rows,co

2020-09-15 22:34:21 105

原创 LeetCode 94 二叉树的中序遍历 HERODING的LeetCode之路

给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]1\2/3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解题思路:这是最简单的中序遍历题目,如果用递归即dfs的方法,几步就可以完成,思路很容易理解,代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeN

2020-09-14 08:39:30 938

原创 LeetCode 79 单词搜索 HERODING的LeetCode之路

给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 false提示:

2020-09-13 17:49:42 1070

原创 LeetCode 637 二叉树的层平均值 HERODING的LeetCode之路

给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:3/ 9 20/ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。解题思路:一道简单的广度优先遍历题,利用队列来实现,先把根节点放入队列中,计算根节点的平均值(就是本身),然后弹出根节点,把根节点的左右子节点放入对列中,循环遍历队列并计算平均值,如此反复直到队列无元素,代码如下:/** *

2020-09-12 08:29:22 183

原创 LeetCode 216 组合总和III HERODING的LeetCode之路

找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。说明:所有数字都是正整数。解集不能包含重复的组合。 示例 1:输入: k = 3, n = 7输出: [[1,2,4]]示例 2:输入: k = 3, n = 9输出: [[1,2,6], [1,3,5], [2,3,4]]解题思路:这道题目相较于前两个组合题,难度可能还稍微降了一些,这道题限定了只能选1——9这9个数,而且不能有重复,思路依然是回溯剪枝,用一个深度优先

2020-09-11 13:34:44 203

原创 LeetCode 40 组合总和II HERODING的LeetCode之路

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。 示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1, 7],[1, 2, 5],[2, 6],[1, 1, 6]]示例 2:输入: candida

2020-09-10 09:30:35 155

原创 LeetCode 39 组合总和 HERODING的LeetCode之路

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]示例 2:输入:candidates = [2,3,5], target = 8,

2020-09-09 09:28:53 752

原创 LeetCode 77 组合 HERODING的LeetCode之路

给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]解题思路:又是使用熟悉的dfs来解决这道题目,当然还要使用剪枝。对于每个数,只有两个可能,要么选择,要么不选择,选择的话如果长度到达K就结束,直接return,长度不够K直接return,这是剪枝的过程,代码如下:class Solution {public: vector&lt

2020-09-08 10:54:37 104

原创 LeetCode 347 前K个高频元素 HERODING的LeetCode之路

给定一个非空的整数数组,返回其中出现频率前 k 高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的 k 总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任意顺序返回答案。解题思路:该

2020-09-07 17:14:50 150

原创 LeetCode 107 二叉树的层次遍历II HERODING的LeetCode之路

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]解题思路:这是一道典型的广度优先算法题目,直接把根节点放到队列中, 然后逐层把左右子节点放到队列中,每到一层保存一层的数值,代码如下:/** * Definition for a binary tr

2020-09-06 09:35:31 206

原创 LeetCode 257 二叉树的所有路径 HERODING的LeetCode之路

给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:1/ \2 3\5输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3解题思路:这是最简单的深度优先算法类型的题目了,思路就是深度优先遍历root,向左或者向右,一直到左右为null的时候结束,这个时候就可以把路径放到vector后面了,代码如下:/** * Definit

2020-09-04 08:07:42 227

原创 LeetCode 51 N皇后 HERODING的LeetCode之路

n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入:4输出:[[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”,“…Q”,“.Q…”]]解释: 4 皇后问题存在两个不同的

2020-09-03 09:56:28 164

原创 LeetCode(4)剑指offer 20 表示数值的字符串 HERODING的LeetCode之路

剑指 Offer 20. 表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。解题思路:这道题目需要考虑的情形相当复杂,首先要把首尾的空格去除,取出中间字符串部分,然后判断是否有指数部分,就是e或者E(要考虑这两种情况),如果没有指数部分,直接判断底数部分,底数不能有多个加减,不能有多

2020-09-02 07:41:41 121

原创 LeetCode 486 预测赢家 HERODING的LeetCode之路

给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数,随后玩家 2 继续从剩余数组任意一端拿取分数,然后玩家 1 拿,…… 。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。示例 1:输入:[1, 5, 2]输出:False解释:一开始,玩家1可以从1和2中进行选择。如果他选择 2(或者 1 ),那么玩家 2 可以

2020-09-01 09:44:02 902

大连理工大学数据库上机-大学模式数据库.docx

这是大连理工大学大学模式数据库上机的答案,标签已经标注完成,有需要的同学自取,当然答案多样,这里只有一种,希望大家可以在看到答案后有所启发,使用更多的方法。

2020-06-07

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

TA关注的人

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