自定义博客皮肤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)
  • 收藏
  • 关注

原创 20153735--3

总结:STL是真的很好用,有时候一个很复杂的程序用一个函数一步就出来了,像sort函数,eraser函数,都是常用并且好用的函数。以后一定得好好学STL啊

2017-06-05 20:56:44 167

原创 合并区间

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

2017-06-05 20:29:02 191

原创 两数之和

题目:两数之和 问题描述:给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 注意事项 你可以假设只有一组答案。 思路:用两个for循环,将给出的数组从头到尾循环两次,若两数之和为给定的target,则将这两个数

2017-06-05 20:03:51 322

原创 两数组的交

题目:两数组的交 问题描述: 返回两个数组的交 注意事项 Each element in the result must be unique. The result can be in any order. 样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2]. 思路:跟上一篇一样,只是多了一个删重函数。

2017-06-01 17:58:19 173

原创 两数组的交Ⅱ

题目:两数组的交Ⅱ 问题描述: 计算两个数组的交 注意事项 每个元素出现次数得和在数组里一样 答案可以以任意顺序给出 样例 nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2]. 思路:先把两个数组排序,然后计算出它们的元素个数,

2017-06-01 17:38:41 162

原创 整数排序

题目:整数排序 问题描述:给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。 思路:使用sort函数排序。 代码: class Solution { public:     /**      * @param A an integer array      * @return void      */  

2017-06-01 17:35:28 190

原创 整数排序Ⅱ

题目:整数排序Ⅱ 问题描述:给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。 思路:使用sort函数排序。 代码: class Solution { public:     /**      * @param A an integer array      * @return void

2017-06-01 17:32:12 164

原创 中位数

题目:中位数 问题描述: 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。 样例 给出数组[4, 5, 1, 2, 3], 返回 3 给出数组[7, 9, 4, 5],返回 5 思路:先用sort函数把数组排好序,再计算出该数组有多少个整数,然后算出中位数所处的位置,

2017-06-01 17:22:52 361

原创 Convert BST to Greater Tree

题目:Convert BST to Greater Tree 问题描述:Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys gr

2017-05-11 17:50:24 135

原创 在二叉树中插入节点

题目:在二叉树中插入节点 问题描述:给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。 思路:插入的节点与根节点比较大小,如果大于根节点,插入做根节点的右孩子;如果小于根节点,做根节点的左孩子,递归下去。 代码: class Solution { public:     /**      * @param root: T

2017-05-11 17:22:41 4364

原创 20153735--2

总结:感觉二叉树的难度难易分化太大,好多题简单,但是有些又特别难,但总体来说感觉比链表简单。在二叉树中学到很多新知识,像前序遍历、中序遍历和后序遍历,在离散数学中只是学了怎样来写出来遍历结果,但是学了数据结构之后会了怎样写代码。学二叉树最重要的一点是递归,好多问题用递归算法真的是简单好多好多。

2017-04-22 17:44:13 170

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

题目描述:把排序数组转换为高度最小的二叉搜索树 问题描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 思路:直接采用中间值来作为二叉树的根节点;将原数组分成左右均等或者相差一个数的两个新数组;然后递归的对这两个新数组进行相同的处理。 代码: class Solution { public:     /**      * @param A:

2017-04-22 17:42:06 246

原创 子树

题目描述:子树 问题描述:有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。注意事项:若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。 思路:判断一棵树T1是否为另一棵树T2的子树,首先在T1

2017-04-22 17:26:57 332

原创 二叉树的层次遍历

题目描述:二叉树的层次遍历 问题描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)。 思路:使用一个队列实现。用两个计数器,一个记录这一层完全二叉树该有的节点个数,另一个记录这一层缺失的节点个数。 代码: class Solution {     /**      * @param root: The root of binary tree.  

2017-04-20 17:10:50 303

原创 将二叉树拆成链表

题目:将二叉树拆成链表 问题描述:将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。注意事项:不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出。 思路:当根节点或者左右子树为空时,返回空树;当左子树为空时,新建一个右节点赋值原二叉树跟的右孩子,递归下去;当右子树为空时,新建一个左

2017-04-20 16:53:48 317

原创 二叉树的路径和

题目:二叉树的路径和 问题描述:给定一个二叉树,找出所有路径中各节点相加总和等于给定目标值 的路径。一个有效的路径,指的是从根节点到叶节点的路径。 思路:找到和为目标值的路径,输出路径上的元素。 代码: class Solution { public:     vector>p;     /**      * @param root the root of

2017-04-18 17:38:07 217

原创 二叉树的所有路径

题目:二叉树的所有路径 问题描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。 思路:一般二叉树的问题用递归解决比较简洁。在库文件string中,to_string(int value)是把一个整数转换为字符串;两个字符串使用“+”连接,是字符串的无空格连接。 代码: class Solution { public:     /**      * @par

2017-04-18 16:18:43 158

原创 等价二叉树

题目:等价二叉树 问题描述:检查两棵二叉树是否等价。等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等。 思路:当根节点都为空时,两棵二叉树等价,返回1;当一棵树的跟节点为空,另一棵树的根节点不为空时,两棵树一定不等价;当两棵树的根节点都不为空且数值相等时,比较左子树,比较完左子树再比较右子树。 代码: class Solutio

2017-04-13 17:27:08 286

原创 二叉树的最大节点

题目:二叉树的最大节点 问题描述:在二叉树中寻找值最大的节点并返回。 思路:定义一个新节点m,初始化它一个极小值,在根节点不为空的情形下,如果根节点的值大于m,就把根节点赋给m,递归,返回m。 代码: class Solution { public:     TreeNode *m=new TreeNode(-10000);     /**      * @

2017-04-12 21:13:14 2090

原创 翻转二叉树

题目:翻转二叉树 问题描述:翻转一棵二叉树。 思路:如果跟不为空,则使同一个双亲的左孩子和右孩子调换位置。 代码: class Solution { public:     /**      * @param root: a TreeNode, the root of the binary tree      * @return: nothing    

2017-04-11 17:32:14 169

原创 二叉树的最小深度

题目:二叉树的最小深度 问题描述:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。 思路:递归函数,返回左右子树的递归结果中的较小值,但是如果结果是0,则返回一个较大数。 代码: class Solution { public:     /**      * @param root: The root of binary tree

2017-04-11 17:06:24 198

原创 克隆二叉树

题目:克隆二叉树 问题描述:给定一棵二叉树,返回一个他的克隆品。 思路:申请一个新的根节点,把原来根节点赋给它,使原先的左子树等于新根的左子树,原先的右子树等于新根的右子树。 代码: class Solution { public:       /**      * @param root: The root of binary tree      * @

2017-04-09 20:52:40 151

原创 二叉树的后序遍历

题目:二叉树的后续遍历 问题描述:给出一棵二叉树,返回其节点值的后序遍历。 思路:用递归的思想,按先左子树后右子树最后跟的方式将节点的值一个个存到vector容器里。 代码: class Solution {     vector r;     /**      * @param root: The root of binary tree.      * @

2017-04-09 18:45:30 174

原创 二叉树的中序遍历

题目:二叉树的中序遍历 问题描述:给出一棵二叉树,返回其中序遍历。 思路:用递归的思想,按先跟后左子树最后右子树的方式将节点的值一个个存到vector容器里。 代码: class Solution {     vector r;     /**      * @param root: The root of binary tree.      * @re

2017-04-09 18:41:00 253

原创 二叉树的前序遍历

题目:二叉树的前序遍历 问题描述:给出一棵二叉树,返回其节点值的前序遍历。 思路:用递归的思想,按先跟后左子树最后右子树的方式将节点的值一个个存到vector容器里。 代码: class Solution { public:     vector r;     /**      * @param root: The root of binary tree.

2017-04-09 18:37:00 185

原创 二叉树的最大深度

题目:二叉树的最大深度 问题描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。 思路:如果根节点为空,则深度为0;如果根节点不为0,则分别求左子树的深度和右子树的深度,哪个大输出哪个并加一。 代码: class Solution { public:     /**      * @param root: The root of b

2017-04-09 18:29:11 249

原创 合并两个排序链表

题目:合并两个排序链表 问题描述:将两个排序链表合并为一个新的排序链表。如:给出 1->3->8->11->15->null,2->null, 返回1->2->3->8->11->15->null。 思路:先假设链表1的头结点的值小于链表2的头结点的值,然后就用链表1的头结点作为合并后的链表的头结点。然后继续合并两个链表中剩余的结点。两个链表中剩下的结点依然是排序的,所以合

2017-03-31 08:53:37 451

原创 20153735--1

总结:学了链表掌握了很多新的知识,尤其是对于动态申请空间的理解,感觉动态申请空间真的比静态申请空间方便很多。数据结构比C++有趣很多,上课听讲也比之前认真很多,但是做题还是不行,很多题都是看别人的能看懂,但是到了自己写就无从下手,自己还是要多练啊。写程序真的是个痛苦的过程,但是AC之后的喜悦也是无与伦比的。

2017-03-31 08:46:39 180

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

题目:两两交换链表中的节点 问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。如:给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。 思路:通过改变指针指向的元素改变两个元素的位置。 代码: class Solution { public:     /**      * @param head a ListNode  

2017-03-31 08:23:25 193

原创 链表求和

题目:链表求和 问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。如:给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null。 思路:遍历两条链表,依次相加,两元素相加的商加到下一位,余数相加。

2017-03-31 07:57:36 356

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

题目:删除排序链表中的重复元素 问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。 思路:遍历链表,如果一个元素的值跟下一个元素相等,删除一个。 代码: class Solution { public:     /**      * @param head: The first node of linked list.      * @ret

2017-03-30 22:08:07 149

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

题目:删除链表中倒数第n个节点。 问题描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。如:给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null. 思路:遍历整个链表,计数结点个数,找到倒数第n个结点,删除它。 代码: class Solution { public:

2017-03-29 11:10:10 160

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

题目:在O(1)时间复杂度删除链表节点 问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。如:给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为1->2->4。 思路:用给定节点的下个节点覆盖这个节点,从而达到删除该节点的目的。 代码: class Solution { public:

2017-03-28 21:50:14 157

原创 链表倒数第n个节点

题目:链表倒数第n个节点 问题描述:找到单链表倒数第n个节点,保证链表中节点的最少数量为n。如:给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1. 思路:遍历整个链表,计数链表元素的个数。第二遍遍历链表,到倒数第n个节点处停止,输出第n个节点。 代码: class Solution { public:     /**  

2017-03-28 17:13:23 192

原创 链表划分

题目:链表划分 问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。如:给定链表 1->4->3->2->5->2->null,并且 x=3,返回 1->2->2->4->3->5->null。 思路:在给定元素左右两边分别新建两个链表。遍历给定链表,比较元素的大小。如果元素小于给定的这个元素,则

2017-03-27 20:54:15 150

原创 翻转链表

题目:翻转链表 问题描述:翻转一个链表。如:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null。 思路:反转指针方向。 代码: class Solution { public:     /**      * @param head: The first node of linked list.      * @return:

2017-03-27 20:51:59 221

原创 链表插入排序

题目:链表插入排序 问题描述:用插入排序对链表排序 思路:申请新链表,插入元素,从第二个开始与之前插入的元素比较大小,如果大,就插到后面。 代码: class Solution { public:     /**      * @param head: The first node of linked list.      * @return: The he

2017-03-26 23:44:21 281

原创 删除链表中的元素

题目:删除链表中的元素 问题描述:删除链表中等于给定值val的所有节点。 思路:遍历整个链表,找到数据域等于val的元素,找到之后令它上一个元素的指针域指向它的下一个元素,从而使它与链表断开,即从链表中删除。 代码: class Solution { public:     /**      * @param head a ListNode      * @

2017-03-26 22:15:09 359

空空如也

空空如也

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

TA关注的人

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