自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 LeetCode 17. 电话号码的字母组合(C++)

题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 输入:”23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”...

2018-09-02 10:19:45 1782 2

原创 LeetCode 236. 二叉树的最近公共祖先(C++)

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,...

2018-09-01 09:52:59 924 1

原创 LeetCode 230. 二叉搜索树中第K小的元素(C++)

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \...

2018-09-01 09:42:28 514 1

原创 LeetCode 108. 将有序数组转换为二叉搜索树(C++)

题目: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示...

2018-09-01 09:39:46 611 0

原创 LeetCode 450. 删除二叉搜索树中的节点(C++)

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(...

2018-09-01 09:37:02 827 1

原创 LeetCode 98. 验证二叉搜索树(C++)

题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: ...

2018-09-01 09:19:00 888 0

原创 LeetCode 235. 二叉搜索树的最近公共祖先(C++)

题目: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: r...

2018-09-01 09:11:41 658 0

原创 LeetCode 437. 路径总和 III(C++)

题目: 给定一个二叉树,它的每个结点都存放着一个整数值。 找出路径和等于给定数值的路径总数。 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。 ...

2018-09-01 09:03:24 356 0

原创 LeetCode 129. 求根到叶子节点数字之和(C++)

题目 给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。 例如,从根到叶子节点路径 1->2->3 代表数字 123。 计算从根到叶子节点生成的所有数字之和。 说明: 叶子节点是指没有子节点的节点。 示例 1: ...

2018-09-01 08:57:22 282 0

原创 LeetCode 257. 二叉树的所有路径(C++)

题目: 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 思路: 递归终止条件:到达叶子节点,即该节点的左右孩子均为空。 路径的拼接:每个节点值 + -> + 左孩子的路径/右孩子的路径(左右均可能有多个路径) ...

2018-09-01 08:29:56 918 0

原创 LeetCode 404. 左叶子之和(C++)

题目: 计算给定二叉树的所有左叶子之和。 示例: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *...

2018-08-31 22:59:20 376 0

原创 LeetCode 111. 二叉树的最小深度(C++)

题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 思路: !!!递归的终止条件:遍历到叶子结点,这里极容易错误的将遍历到...

2018-08-31 22:56:35 206 0

原创 LeetCode 112. 路径总和(C++)

题目: 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5...

2018-08-31 22:49:09 238 0

原创 LeetCode 110. 平衡二叉树(C++)

题目: 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。 示例 2: 给定二叉树 ...

2018-08-31 22:42:56 444 0

原创 LeetCode 222. 完全二叉树的节点个数(C++)

题目: 给出一个完全二叉树,求出该树的节点个数。 说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 思路: 参考文章 首先说明如...

2018-08-31 22:36:38 845 0

原创 LeetCode 101. 对称二叉树(C++)

题目: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 说明: 如果你可以运用递归和迭代两种方法解决这个问题,会很加分。 思路: 递归终止条件...

2018-08-31 22:10:01 889 0

原创 LeetCode 100. 相同的树(C++)

给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 示例 2: 示例 3: 思路: 递归终止条件::两棵树遍历到的节点均为空(true),有一个为空(true),均不为空但是节点值不一样。 /*...

2018-08-31 22:03:28 522 0

原创 LeetCode 226. 翻转二叉树(C++)

题目: 翻转一棵二叉树。 示例: 输入: 输出: /** 思路: 递归终止条件:终止条件就是遍历到节点为空。 注意:二叉树非叶子节点不一定同时拥有左右孩子。 * Definition for a binary tree node. * struct TreeNod...

2018-08-31 21:52:56 318 0

原创 LeetCode 111. 二叉树的最小深度(C++)

题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最小深度 2. 思路: 递归终止条件,遍历到叶子结点r...

2018-08-31 21:33:41 542 0

原创 LeetCode 编译错误记录(更新中)

错误提示:stray ‘\357’ in program 错误原因:可能是中英分号混用错误导致。 错误提示:member access within null pointer of type ‘struct TreeNode’ 错误原因:访问了空指针的成员(通常是访问了空指针的val) ...

2018-08-31 20:49:29 1044 0

原创 LeetCode 104. 二叉树的最大深度(C++)

题目: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 ...

2018-08-27 15:59:13 1766 0

原创 LeetCode 347. 前K个高频元素(C++)

题目: 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] 说明: 你可以假设给定的 k 总是合理的,且 ...

2018-08-27 11:01:23 1016 2

原创 LeetCode 279. 完全平方数(C++)

题目: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 示例 1: 输入: n = 12 输出: 3 解释: 12 = 4 + 4 + 4. 示例 2: 输入: n = 13 输出: 2 解释: ...

2018-08-27 09:51:59 1379 0

原创 LeetCode 199. 二叉树的右视图(C++)

题目: 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 ...

2018-08-26 20:46:37 236 0

原创 LeetCode 107. 二叉树的层次遍历 II(C++)

题目 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍...

2018-08-26 20:18:32 491 0

原创 LeetCode 102. 二叉树的层次遍历(C++)

题目 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,2...

2018-08-26 19:31:47 592 0

原创 LeetCode 94、144、145 二叉树的前序、中序、后序遍历的统一实现方法(递归与非递归)

递归方法实现二叉树其实很简单,其实只需要更改输出每个结果与·调用递归函数的相对位置即可实现。 一、递归实现 1.二叉树的前续遍历 class Solution { private: void rec(TreeNode* root,vector<int&g...

2018-08-26 17:06:06 93 0

原创 LeetCode 145. 二叉树的后序遍历(C++)

题目: 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路: 二叉树后序遍历规则: 1.遍历左子树...

2018-08-26 15:26:33 890 0

原创 LeetCode 94. 二叉树的中序遍历(C++)

题目: 给定一个二叉树,返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归实现 /** * Definition for a ...

2018-08-25 16:56:48 1742 0

原创 LeetCode 144. 二叉树的前序遍历 (C++)

题目: 给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 思路: 二叉树的前序遍历规则 1. 访问根结点...

2018-08-25 15:11:44 668 0

原创 LeetCode 71. 简化路径

题目: 给定一个文档 (Unix-style) 的完全路径,请进行路径简化。 例如, path = "/home/", => "/home" path = "/a/./b/../../c/", => &q...

2018-08-25 11:24:18 34 0

原创 LeetCode 150. 逆波兰表达式求值

题目: 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 说明: 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入: [...

2018-08-25 10:40:57 172 0

原创 LeetCode 20. 有效的括号(C++)

题目: 给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出...

2018-08-24 20:29:18 1519 0

原创 LeetCode 61. 旋转链表(C++)

题目: 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1-&am...

2018-08-24 15:57:35 302 1

原创 LeetCode 19. 删除链表的倒数第N个节点

题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3-&am...

2018-08-24 14:59:06 52 0

原创 LeetCode 147. 对链表进行插入排序(C++)

题目: 对链表进行插入排序。 动画演示 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法: 1.插入排序是迭代的,每次只移动一个元素,直到所有元素...

2018-08-23 20:17:07 384 0

原创 排序算法——堆排序(大顶堆、小顶堆)

堆排序的思想这里就先不讲了,以后有时间再补上,下面是分别采用大顶堆和小顶堆实现的堆排序。 注意:下面例子中排序的数字是{1,2,5,3,6,4,9,7,8}。 大顶堆方式 #include <iostream> #include <stdlib....

2018-08-21 16:19:43 3094 2

原创 LeetCode 24. 两两交换链表中的节点(C++)

题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的额外空间。 你不能只是单纯...

2018-08-20 06:49:49 1670 0

原创 LeetCode 21. 合并两个有序链表(C++)

题目: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3-&...

2018-08-19 16:59:44 490 0

原创 LeetCode 82. 删除排序链表中的重复元素 II(C++)

题目: 定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5...

2018-08-19 16:21:59 325 0

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