自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 20153743--3排序总结

排序总结        此排序部分的题相对简单,主要是基于有序的情况下,对元素进行增删查改。但自己对于各种排序原理掌握得很混乱,不知道该如何写具体代码,所以在排序时主要用一个sort函数来解决问题。自己还应该加强熟悉各种排序原理,弄清各种排序方法的异同处。

2017-06-05 17:24:36 219 1

原创 整数排序

题目:给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。思路:直接用sort函数便可求解此题。具体代码:class Solution {public:    /**     * @param A a

2017-06-05 17:18:04 201

原创 合并区间

题目:给出若干闭合区间,合并所有重叠的部分。样例给出的区间列表 => 合并后的区间列表:[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ]

2017-06-05 17:11:07 203

原创 中位数

题目:给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例:给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5思路:先将数组排序,再输出中位数即可。具体代码:class Solution {public:    /**   

2017-06-04 21:20:44 500

原创 两数组的交

题目:返回两个数组的交样例:nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].思路:先找出两数组的交,然后再去重,unique返回的是去重后的尾地址。具体代码:class Solution {public:    /**     * @param nums1 an integer array     * @

2017-06-04 20:03:39 178

原创 两数组的交Ⅱ

题目:计算两个数组的交样例:nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].思路:先将两数组排序,再遍历两数组,找到两数组中相同的元素。具体代码:class Solution {public:    /**     * @param nums1 an integer array     * @p

2017-06-04 16:50:56 180

原创 两数之和

题目:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。样例给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].思路:通过遍历来判断数组中每两个数的和是否

2017-06-04 16:17:49 148

原创 子数组之和

题目:给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置样例:给出 [-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3].思路:从第一个元素开始遍历,将该元素后面的元素逐个相加,直到和为0或者到数组末尾。然后返回子数组的起始位置和结束位置。具体实现代码:class Solution {p

2017-05-18 17:06:57 300

原创 在二叉查找树中插入节点

题目:给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。样例:给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \1 4 --> 1 4 / / \ 3 3

2017-05-13 21:16:16 502

原创 Convert BST to Greater Tree

/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->left = this

2017-05-13 21:06:59 145

原创 20153743--2二叉树总结

二叉树中最终要的操作就是遍历

2017-04-20 22:35:43 239

原创 二叉树的所有路径

题目:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]思路:此题与二叉树的路径和差不多通过遍历,将从根节点到叶子节点这条路径上的节点一次存入vector中,但要注意将int型转化为string 型

2017-04-20 22:26:18 186

原创 子树

题目:/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->le

2017-04-20 22:12:12 189

原创 将二叉树拆成链表

题目:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。样例: 1 \ 1 2 / \ \ 2 5 => 3 / \ \ \ 3 4 6

2017-04-20 21:32:31 171

原创 二叉树的路径和

题目:给定一个二叉树,找出所有路径中各节点相加总和等于给定目标值 的路径。一个有效的路径,指的是从根节点到叶节点的路径。样例:给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3返回:[ [1, 2, 2], [1, 4]]思路:当访问到某一结点时,把该结点添加到vector上,

2017-04-20 21:15:58 307

原创 把排序数组转换为高度最小的二叉搜索树

题目给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7思路:将数组转化为树,令该树通过中根遍历的结果与数组中的顺序一致。将数组二分,令小的那一部分作为左子树,大的那一部分作为右子树,中间数作为根

2017-04-20 16:50:54 200

原创 二叉树的最小深度

给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。

2017-04-19 11:18:16 177

原创 克隆二叉树

深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5思路:在遍历的过程中生成一个新树,该新树的节点值等于旧树对应的节点值。具体代码

2017-04-19 11:04:30 193

原创 翻转二叉树

题目:翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 4思路:在遍历的过程中将每个结点的左右子树进行交换。从根节点出发,如果操作的节点是空值,则不进行任何操作,否则交换左右儿子。具体代码:/** * Definition of TreeNode:

2017-04-19 10:56:45 172

原创 等价二叉树

题目:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。样例 1 1 / \ / \ 2 2 and 2 2 / /4 4就是两棵等价的二叉树。 1 1

2017-04-19 10:48:42 309

原创 二叉树的最大深度

题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.思路:二叉树的层数就是二叉树的深度,所以只需在二叉树的层次遍历中的加入一个记录层数的数a即可。/** * Definition of TreeNo

2017-04-10 21:28:49 203

原创 二叉树的层次遍历

题目:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]挑战 挑战1:只使用一个队列去实现它挑战2:用DFS算法来做

2017-04-10 20:48:35 225

原创 二叉树的后序遍历

题目:给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]挑战 你能使用非递归实现么?思路:只需将前序遍历中的V.push_back(root->val);放到递归遍历结点的左右子树后具体实现代码:/** * Definit

2017-04-10 20:37:57 448

原创 二叉树的中序遍历

题目:给出一棵二叉树,返回其中序遍历样例:给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].挑战 :你能使用非递归算法来实现么?思路:此题思路与二叉树的前序遍历的思路一样,只是将具体实现代码:/** * Definition of TreeNode: * class Tr

2017-04-10 20:11:31 1102

原创 二叉树的前序遍历

题目:给出一棵二叉树,返回其节点值的前序遍历。样例:给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].挑战 :你能使用非递归实现么?思路:/** * Definition of TreeNode: * class TreeNode { * public

2017-04-08 20:55:36 217

原创 二叉树的最大节点

题目:在二叉树中寻找值最大的节点并返回。样例:给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。思路:采用非递归的先根次序遍历二叉树①从根节点开始,访问左子树,并将当前访问的结点与当前最大值结点作比较,若当前结点值大于当前最大值结点,则用该结点替换最大值结点,然后

2017-04-07 08:08:07 837

原创 20153743--1链表总结

链表总结

2017-03-30 17:13:32 215

原创 删除链表中的元素

题目:删除链表中等于给定值val的所有节点。样例给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。思路:通过遍历链表找出与给定值相同的结点,如果head->next的值等于val,则将head->next指向head->next->next,继续往下遍历,重复前面步骤。/**

2017-03-30 16:54:08 189

原创 两两交换链表中的节点

题目:给一个链表,两两交换其中的节点,然后返回交换后的链表。样例:给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。挑战:你的算法只能使用常数的额外空间,并且不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。思路:将链表中的结点分组,四个一组,在每一组中,第一个结点的next指向第四个结点,第二个结点的next指向第一个结点,此组操作完成

2017-03-30 16:37:20 249

原创 链表求和

题目:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例:给出两个链表 3->1->5->null 和 5->9->2->null,返回8->0->8->null思路:主要是通过移动两个链表的指针,将两个链表中位于相同位数上的数字加起来,再把和赋值到新的

2017-03-29 21:08:29 237

原创 链表划分

题目:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例:给定链表 1->4->3->2->5->2->null,并且 x=3返回 1->2->2->4->3->5->null思路:/** * Definition of ListNode * class L

2017-03-27 20:49:02 240

原创 合并两个排序链表

题目:合并两个排序链表,将两个排序链表合并为一个新的排序链表。样例:给出 1->3->8->11->15->null,2->null, 返回1->2->3->8->11->15->null。思路:具体代码:/** * Definition of ListNode * class ListNode { * public:

2017-03-27 19:33:38 213

原创 删除排序链表中的重复元素

题目:删除排序链表中的重复元素。给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例:给出 1->1->2->null,返回 1->2->null给出 1->1->2->3->3->null,返回 1->2->3->null思路:该题所给的链表是有序的链表,这大大降低了该题的难度,所以只要再定义一个指针p,固定head,移动p,看p的值是否与head的值

2017-03-26 20:38:01 159

原创 在O(1)时间复杂度删除链表节点

题目给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。思路:题目中要求用O(1)时间复杂度删除结点,如果用像“删除链表中倒数第”/** * Definition of ListNode * class ListNod

2017-03-25 16:53:57 215

原创 链表插入排序

用插入排序对链表排序Given 1->3->2->0->null, return 0->1->2->3->null/** * Definition of ListNode * class ListNode { * public: *     int val; *     ListNode *next; *     ListNode(int val) {

2017-03-25 16:15:30 224

原创 翻转链表

题目:翻转一个链表样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null思路:定义一个指针p,作为head->next的指向,由于令head->next=p后,head->next就发生了改变,所以要提前定义一个指针node,并令head->next=node。通过移动head(令head=node)并改变head->next的指向来翻转

2017-03-25 16:12:38 283

原创 删除链表中倒数第n个结点

题目:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。注意事项:链表中的节点个数大于等于n样例:给出链表1->2->3->4->5->null和 n = 2.,删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.O(n)时间复杂度思路:代码:/** * Definition of ListNode * class

2017-03-24 08:52:51 245

原创 链表倒数第n个节点

题目:找到单链表倒数第n个节点,保证链表中节点的最少数量为n。给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.思路:先统计出链表总的元素个数a,而倒数第n个元素就是正数第a-n+1个元素。链表有方向,所以正向寻找元素比较方便。知道了该元素为正数第几个元素后,便可以从链表的头指针开始,逐步找到该元素,然后返回该元素。具体步骤为:①定义一个

2017-03-23 21:37:04 417

空空如也

空空如也

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

TA关注的人

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