自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 排序感想

排序中有很多算法可以很大程度上减少运行时间,如果写程序时加些这些能加快程序的运行速度,但很多程序看着比较绕,有些难理解。

2017-06-11 18:38:05 213 1

原创 两数组的交

问题描述:返回两个数组的交。样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].解题思路:在上个题的基础上jia'ge

2017-06-11 18:26:55 182

原创 两数组的交 II

问题描述:计算两个数组的交样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2,2].解题思路:先对两个数组进行排序后,然后从开始两个一一比较,将重复的加到新的vector中。实验代码:class Solution {public:    /**     * @param nums1 an integer arr

2017-06-11 16:48:35 186

原创 合并区间

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

2017-06-11 16:44:12 349

原创 整数排序

问题描述:给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。样例对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。解题思路:两个for循环进行比较,将小的数放在前面,大的放在后面。实验代码:class Solution {public:    /**     * @pa

2017-06-11 16:40:10 200

原创 整数排序 II

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

2017-06-11 16:35:55 162

原创 中位数

问题描述:给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5解题思路:先对数组排序,然后判断数组个数是否为偶数,为偶数返回第一半减一个,不为偶数返回第一半个。实验代码:class Sol

2017-06-11 16:30:47 235

原创 两数之和

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

2017-05-21 13:15:00 146

原创 快乐数

问题描述:写一个算法来判断一个数是不是"快乐数"。一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。样例19 就是一个快乐数。1^2 + 9^2 = 828^2 + 2^2 = 686^2 + 8^2 = 1001^2 + 0^

2017-05-21 13:13:48 186

原创 Convert BST to Greater Tree

问题描述:给定一个二叉搜索树(BST),将其转换为更大的树,这样每一个原始BST的关键是改变原来的关键+所有键大于原BST的关键。样例Given a binary search Tree `{5,2,3}`: 5 / \ 2 13Return the root of new tree

2017-05-21 13:10:13 127

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

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

2017-05-21 13:05:25 216

原创 二叉树感想

二叉树好多都用到了递归的方式,许多题虽然可以使用非递归的方式,但用递归的方式代码简单,但递归的方式比较难离家。

2017-04-23 19:29:28 579

原创 二叉树的层次遍历

问题描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]解题思路:建立一个队列,循环时在每一行后面加NULL,用来判断一层是否结束。实验代码:cla

2017-04-23 19:15:28 147

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

问题描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7解题思路:用二分法的方式建立新的搜索二叉树。实验代码:class Solution {public:    /**     *

2017-04-23 18:24:16 210

原创 将二叉树拆成链表

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

2017-04-23 17:36:00 216

原创 二叉树的所有路径

问题描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]解题思路:同样使用递归的方式将路径保存都建立的string类型的vector中,让每一条路径都是vector中的一个元素。实验代码:class So

2017-04-23 16:06:19 216

原创 子树

问题描述:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。样例下面的例子中 T2 是 T1 的子树: 1 3 / \ / T1 = 2 3 T2 = 4 / 4下面的例子中 T

2017-04-22 20:49:20 223

原创 等价二叉树

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

2017-04-22 16:49:59 214

原创 克隆二叉树

问题描述:深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5解题思路:创建一个新的节点,通过递归的方式将系统给的树的每个位置付给新的节点。实验代码:

2017-04-22 16:17:42 159

原创 二叉树的最小深度

问题描述:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树:        1     /     \    2       3          /    \        4      5  这个二叉树的最小深度为 2解题思路:通过递归,记录左子树的最小深度以及右子树的最小深度,当某节点的

2017-04-22 15:58:25 196

原创 二叉树的最大深度

问题描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.解题思路:通过递归的方式,先求左子树的深度,再求右子树的深度,然后两者进行比较。实验代码:class Solution {public:    /

2017-04-22 15:33:11 302

原创 二叉树的最大节点

问题描述:在二叉树中寻找值最大的节点并返回。样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。解题思路:通过前序遍历的方式进行查找和比较,通过递归,将前序遍历用来保存的语句改成比较。实验代码:class Solution {    TreeNode *x=

2017-04-22 15:25:37 318

原创 二叉树的后序遍历

问题描述:给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]解题思路:与前序遍历和中序遍历相同,同样使用递归的方法。先左子树,再右子树最后根。实验代码:class Solution {    /**     * @param root: The root

2017-04-22 15:19:12 210

原创 二叉树的中序遍历

问题描述:给出一棵二叉树,返回其中序遍历。样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].解题思路:与前序遍历一样,同样使用递归的方式,先访问左子树,再保存根,最后访问右子树。实验代码:class Solution {    /**     * @param root: The roo

2017-04-22 15:14:25 266

原创 二叉树的前序遍历

问题描述:给出一棵二叉树,返回其节点值的前序遍历。样例:给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].解题思路:前序遍历要先保存根,然后再保存左子树,最后右子树。在函数前定义一个int类型的vector,然后用递归的方式先保存根,然后访问左子树再访问右子树。最后将这个vector返回。实验代码:

2017-04-22 15:02:18 220

原创 链表感想

在链表的学习中,链表的头插法感到有些难度,所以在做题时很多题的做法都是用尾插法做的。链表的指针还是有些不懂。做这些题让我收获很多,明白了许多链表的用法。

2017-03-31 20:13:41 471

原创 链表插入排序

问题描述:用插入排序对链表排序。                   样例                   Given 1->3->2->0->null, return 0->1->2->3->null解题思路:取出系统链表的第一个元素,将他放到新的链表中,在进行第二个元素,比较后将第二个元素插到新的链表中,依次循环,直到系统链表指针为null;实验代码:c

2017-03-31 20:07:16 154

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

问题描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。          样例          给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.解题思路:新定义一个链表,让新链表等于系统链表,先让新链表指针向后移动n,然后让新链表与系统链表一起循环,将系统链表的指针的值给另一个

2017-03-31 15:17:37 217

原创 两两交换链表中的节点给一个链表,两两交换其中的节点,然后返回交换后的链表。

问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。         样例         给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。解题思路:直接交换链表中节点的值。实验代码:class Solution {public:    /**     * @param head a ListNode     *

2017-03-31 14:49:27 1005

原创 合并两个排序链表

问题描述:将两个排序链表合并为一个新的排序链表。         样例:             给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。解题思路:令两个链表的开始元素比较,将小的元素放到新链表中,然后拥有小元素的指针向后移动,知道把所有的元素全放到新链表表中。实验代码:clas

2017-03-31 14:39:43 223

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

问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。          样例:给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为1->2->4。解题思路:系统给了要删除的节点,覆盖这个节点不仅要把他的指针给指向下一个节点,而且还要把下一个节点的值给他。实验代码:class Solution {pub

2017-03-29 21:10:06 161

原创 翻转链表

问题描述:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null。解题思路:老师给的课件中定义一个新的链表,令系统链表的下一个元素赋值给空的第二个新链表,将第一个新的链表给系统链表的下一个元素,将系统链表添加到第一个新的链表上 。将第二个新链表给系统链表然后进行循环。实验代码:class Solution {public:    /** 

2017-03-29 20:33:50 179

原创 链表划分

问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。          样例:               给定链表 1->4->3->2->5->2->null,并且 x=3               返回 1->2->2->4->3->5->null解题思路:定义两个链表,若系统链表指针所指元素

2017-03-29 19:57:56 146

原创 给定一个排序链表,删除所有重复的元素每个元素只留下一个。

问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。          样例:               给出 1->1->2->null,返回 1->2->null。               给出 1->1->2->3->3->null,返回 1->2->3->null。解题思路:定义俩个标记数组,初始化两个数组为0,若链表中出现一个元素,用标记数组的下标标记

2017-03-29 19:50:17 1721

原创 链表倒数第n个节点

问题描述:找到单链表倒数第n个节点,保证链表中节点的最少数量为n。         样例:给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1。解题思路:创建一个新的链表,令这个新链表的头指针向后移动n次,然后令新链表和系统给的链表一起循环,知道新链表指针成NULL,此时系统链表指针所指的下一个元素为所要求得元素。(用其他方法代替所求元素前有

2017-03-29 19:39:46 250

原创 链表求和

问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。         样例:给出两个链表 3->1->5->null 和 5->9->2->null,返 回8->0->8->null。解题思路:1.令俩链表各对应元素相加。由于储存要按原来相反的顺序,所以令得到的

2017-03-29 19:16:11 231

原创 删除链表中的元素

问题描述:给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。解题思路:领系统给的链表从头节点开始循环,若当前链表下一个的值(val)等于要删除的值,则令该节点的直接指向他的下下个节点,已覆盖的形式删除不需要的节点。实验代码:class Solution {public:    /**     *

2017-03-29 19:14:13 163

空空如也

空空如也

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

TA关注的人

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