- 博客(93)
- 资源 (7)
- 收藏
- 关注
原创 LeetCode 17. 电话号码的字母组合(C++)
题目:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例: 输入:”23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。思路:...
2018-09-02 10:19:45
3352
2
原创 LeetCode 236. 二叉树的最近公共祖先(C++)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4] _______3______...
2018-09-01 09:52:59
1990
1
原创 LeetCode 230. 二叉搜索树中第K小的元素(C++)
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1示例 2:输入: root = [5,3,6,2,4,null,nu...
2018-09-01 09:42:28
1013
1
原创 LeetCode 108. 将有序数组转换为二叉搜索树(C++)
题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /...
2018-09-01 09:39:46
1167
原创 LeetCode 450. 删除二叉搜索树中的节点(C++)
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:root = [5,3,6,2,4,null,7]key =...
2018-09-01 09:37:02
1410
1
原创 LeetCode 98. 验证二叉搜索树(C++)
题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ ...
2018-09-01 09:19:00
1438
原创 LeetCode 235. 二叉搜索树的最近公共祖先(C++)
题目:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] ______...
2018-09-01 09:11:41
1221
原创 LeetCode 437. 路径总和 III(C++)
题目:给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例: 思路:本题重点是路径可以不从根节点开始,也可以不到叶子结点结束。对于从根节点开始到叶...
2018-09-01 09:03:24
841
原创 LeetCode 129. 求根到叶子节点数字之和(C++)
题目给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1: 示例 2: /** * Definition for a binary tree node. * str...
2018-09-01 08:57:22
586
原创 LeetCode 257. 二叉树的所有路径(C++)
题目:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例: 思路:递归终止条件:到达叶子节点,即该节点的左右孩子均为空。 路径的拼接:每个节点值 + -> + 左孩子的路径/右孩子的路径(左右均可能有多个路径)/** * Definition for a binary tree node. * struct Tre...
2018-09-01 08:29:56
1313
原创 LeetCode 404. 左叶子之和(C++)
题目:计算给定二叉树的所有左叶子之和。示例: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),...
2018-08-31 22:59:20
919
原创 LeetCode 111. 二叉树的最小深度(C++)
题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 思路:!!!递归的终止条件:遍历到叶子结点,这里极容易错误的将遍历到节点为空作为递归终止条件,从而产生错误。/** * Definition for a bin...
2018-08-31 22:56:35
476
原创 LeetCode 112. 路径总和(C++)
题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。思路:递归终止条件:叶子节点的值等于sum(sum在递...
2018-08-31 22:49:09
674
原创 LeetCode 110. 平衡二叉树(C++)
题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1: 给定二叉树 [3,9,20,null,null,15,7] 返回 true 。示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 返回 false 。思路:两层递归,...
2018-08-31 22:42:56
825
原创 LeetCode 222. 完全二叉树的节点个数(C++)
题目:给出一个完全二叉树,求出该树的节点个数。说明: 完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。思路:参考文章 首先说明如下: 1.如果一棵二叉树是完全二叉树,那么二叉树最大深度和右子树的最大深度是相同的话,那么根节点的左...
2018-08-31 22:36:38
1485
原创 LeetCode 101. 对称二叉树(C++)
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 说明: 如果你可以运用递归和迭代两种方法解决这个问题,会很加分。思路:递归终止条件::两棵树同时遍历到空(true),仅一棵树遍历到空(false),两棵树遍历到的节点值不同(fals...
2018-08-31 22:10:01
1499
原创 LeetCode 100. 相同的树(C++)
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1: 示例 2: 示例 3: 思路:递归终止条件::两棵树遍历到的节点均为空(true),有一个为空(true),均不为空但是节点值不一样。/** * Definition for a binary tree node. * struct T...
2018-08-31 22:03:28
1209
原创 LeetCode 226. 翻转二叉树(C++)
题目:翻转一棵二叉树。示例: 输入: 输出: /**思路:递归终止条件:终止条件就是遍历到节点为空。 注意:二叉树非叶子节点不一定同时拥有左右孩子。 * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * T...
2018-08-31 21:52:56
747
原创 LeetCode 111. 二叉树的最小深度(C++)
题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 返回它的最小深度 2.思路:递归终止条件,遍历到叶子结点root->left == NULL && root->right == N...
2018-08-31 21:33:41
1028
原创 LeetCode 编译错误记录(更新中)
错误提示:stray ‘\357’ in program 错误原因:可能是中英分号混用错误导致。错误提示:member access within null pointer of type ‘struct TreeNode’ 错误原因:访问了空指针的成员(通常是访问了空指针的val)...
2018-08-31 20:49:29
1831
原创 LeetCode 104. 二叉树的最大深度(C++)
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。/** * Definition for a binary ...
2018-08-27 15:59:13
2711
原创 LeetCode 347. 前K个高频元素(C++)
题目:给定一个非空的整数数组,返回其中出现频率前 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) , ...
2018-08-27 11:01:23
2017
3
原创 LeetCode 279. 完全平方数(C++)
题目:给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.思路:这道题看起来有点像贪心算法,但是如果运用贪心算法的话 12 =...
2018-08-27 09:51:59
3144
原创 LeetCode 199. 二叉树的右视图(C++)
题目:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---思路:这道...
2018-08-26 20:46:37
543
原创 LeetCode 107. 二叉树的层次遍历 II(C++)
题目给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]相比于LeetCode 102 ...
2018-08-26 20:18:32
837
原创 LeetCode 102. 二叉树的层次遍历(C++)
题目给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]废话不多说,直接上代码/** * Definition for ...
2018-08-26 19:31:47
1058
原创 LeetCode 94、144、145 二叉树的前序、中序、后序遍历的统一实现方法(递归与非递归)
递归方法实现二叉树其实很简单,其实只需要更改输出每个结果与·调用递归函数的相对位置即可实现。一、递归实现1.二叉树的前续遍历class Solution {private: void rec(TreeNode* root,vector<int> &ret){ if(root != NULL){ ret.pus...
2018-08-26 17:06:06
249
原创 LeetCode 145. 二叉树的后序遍历(C++)
题目:给定一个二叉树,返回它的 后序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路:二叉树后序遍历规则: 1.遍历左子树 2.遍历右子树 3.遍历根节点 递归实现:/** * Definition for a ...
2018-08-26 15:26:33
1780
原创 LeetCode 94. 二叉树的中序遍历(C++)
题目:给定一个二叉树,返回它的中序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归实现/** * Definition for a binary tree node. * struct TreeNode { * int v...
2018-08-25 16:56:48
3727
原创 LeetCode 144. 二叉树的前序遍历 (C++)
题目:给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路:二叉树的前序遍历规则 1. 访问根结点; 2. 遍历左子树; 3. 遍历右子树 递归实现方式:/** * Definit...
2018-08-25 15:11:44
1108
原创 LeetCode 71. 简化路径
题目:给定一个文档 (Unix-style) 的完全路径,请进行路径简化。例如,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c"边界情况:你是否考虑了 路径 = "/../" 的情况?在这种情况下,你需返回 "/" 。此外,路径中也可能包含多个斜杠 '/' ,如
2018-08-25 11:24:18
163
原创 LeetCode 150. 逆波兰表达式求值
题目:根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = ...
2018-08-25 10:40:57
359
原创 LeetCode 20. 有效的括号(C++)
题目:给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出:...
2018-08-24 20:29:18
2646
原创 LeetCode 61. 旋转链表(C++)
题目:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步
2018-08-24 15:57:35
673
1
原创 LeetCode 19. 删除链表的倒数第N个节点
题目:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗?思路:1.两次遍历:第一次遍历链表,求出整个链表的长...
2018-08-24 14:59:06
147
原创 LeetCode 147. 对链表进行插入排序(C++)
题目:对链表进行插入排序。 动画演示 插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。 每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法: 1.插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 2.每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序...
2018-08-23 20:17:07
763
原创 排序算法——堆排序(大顶堆、小顶堆)
堆排序的思想这里就先不讲了,以后有时间再补上,下面是分别采用大顶堆和小顶堆实现的堆排序。 注意:下面例子中排序的数字是{1,2,5,3,6,4,9,7,8}。 大顶堆方式#include <iostream>#include <stdlib.h>using namespace std;//堆调整//将nums[s..m]调整为大顶堆,其中除了nums[s...
2018-08-21 16:19:43
4464
2
原创 LeetCode 24. 两两交换链表中的节点(C++)
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路:建立虚拟头结点(为了不对head进行特殊处理),按照如下示意图进行节点交换。 ...
2018-08-20 06:49:49
2637
原创 LeetCode 21. 合并两个有序链表(C++)
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:新建虚拟头结点,指针cur等于头结点,比较l1和l2的大小,将cur->next指向二者中较小的。/** * Def...
2018-08-19 16:59:44
884
原创 LeetCode 82. 删除排序链表中的重复元素 II(C++)
题目:定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3思路:这道题的陷阱在于需要删除所有含有重复数字的节...
2018-08-19 16:21:59
632
TeeChart2011.ocx && .net && 破解版
2018-03-28
C#实现带括号的逻辑表达式的运算(与或非)
2018-03-24
实现 DataTable按条件进行更新(类似sql的update)
2018-03-23
C#(Winform)实现右键菜单(带勾选)
2018-03-11
C# winform 导出datatable到excel的多个sheet
2017-12-01
C# 导出excel表格(xls、xlsx两种格式)
2017-09-12
C#连接mysql数据库与简单操作
2017-09-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人