自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 刘芳20153721--3

这次的题整体比前几次简单,看到题的时候能够有些思路,只是有时候需要注意细节.排序有很多种方法,时间复杂度都不同,做题的时候选择复杂度最小的方法最好,但有些题目没有具体要求就用了自己擅长的方法,在这方面还需要努力,争取把好的常用的方法都掌握好.

2017-06-09 16:58:55 292

原创 中位数

一.题目描述给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例  给出数组[4, 5, 1, 2, 3], 返回 3           给出数组[7, 9, 4, 5],返回 5二.解题思路先用sort函数对数组元素排序,如果元素个数为偶数,则返回第n/2-1个元素,

2017-06-09 16:50:53 261

原创 合并区间

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

2017-06-08 21:50:24 212

原创 整数排序 II

一.题目描述给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。二.解题思路sort函数就是时间复杂度为O(nlogn)的算法,用sort函数进行排序.三.实现代码class Soluti

2017-06-08 21:28:20 181

原创 整数排序

一.题目描述给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。您在真实的面试中是否遇到过这个题? Yes样例对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。二.解题思路三.实现代码class Solution {public:

2017-06-08 21:12:34 371

原创 两数之和

一.题目描述给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 注意事项你可以假设只有一组答案。您在真实的面试中是否遇到过这个题? Yes样例给

2017-06-08 20:57:45 205

原创 两数组的交 II

一.题目描述计算两个数组的交 注意事项每个元素出现次数得和在数组里一样答案可以以任意顺序给出样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].二.解题思路先用sort函数对两个数组元素排序,再进行比较将两数组相同元素放在新的向量中,三.实现代码class Solut

2017-06-08 20:43:32 187

原创 两数组的交

一.题目描述返回两个数组的交 注意事项Each element in the result must be unique.The result can be in any order.您在真实的面试中是否遇到过这个题? Yes样例nums1 = [1, 2, 2, 1], nums2 = [2, 2

2017-06-08 20:27:28 176

原创 快乐树

一.题目描述写一个算法来判断一个数是不是"快乐数"。一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。您在真实的面试中是否遇到过这个题? Yes样例19 就是一个快乐数。1^2 + 9^

2017-06-08 18:03:03 476

原创 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 greater than the original key in BS

2017-05-20 10:11:03 155

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

一.题目描述给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。 注意事项   You can assume there is no duplicate values in this tree + node.样例    给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的:2 2/ \ / \1 4 --> 1 4

2017-05-20 09:23:35 420

原创 刘芳20153721--2

这一次的作业基本上都利用了递归的方法,递归写起来简单,但要捋清楚中间的具体操作过程却有些困难,一开始写的时候经常绕不过来弯,越写就越熟练一些;但有些题自己还是做不出来,等看了别人的代码就会恍然大悟,代码很容易看懂,就是思路不容易想到或想出来不知道怎么用代码实现,所以说还是需要多做一些题,多看些代码.

2017-04-23 20:51:57 196

原创 二叉树的路径和

一题目描述二.解题思路三.实现代码四.感悟

2017-04-22 22:02:31 259

原创 二叉树的所有路径

一.题目描述给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]二.解题思路当一个节点的左右子树都为空时,把从根节点到该节点的路径保存在向量中,找到所有的叶子节点就完成了对所有路径的保存.三.实现代码/**

2017-04-22 21:43:42 4456

原创 二叉树的层次遍历

一.题目描述给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]二.解题思路利用队列的先进先出,先让根节点入队,然后依次出队保存在向量中,同时让其左右儿子入队

2017-04-22 21:30:06 230

原创 子树

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

2017-04-22 21:13:37 346

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

一.题目描述给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。 注意事项There may exist multiple valid solutions, return any of them.样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1

2017-04-22 20:22:58 875

原创 将二叉树拆成链表

一.题目描述将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right指针,来表示链表中的 next 指针。 注意事项不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出样例 1 \ 1 2 / \

2017-04-22 19:44:13 165

原创 二叉树的最小深度

一.题目描述给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树:        1     /     \    2       3          /    \        4      5  这个二叉树的最小深度为 2二.解题思路与求最大深度的思想差不多,利用递归的方法求

2017-04-22 19:41:31 235

原创 二叉树的最大深度

一.题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.二.解题思路利用递归分别遍历左子树和右子树,每递归一次节点到根节点的距离加1,最后比较哪个子树的最后一个节点离根节点的三.实现代码/**

2017-04-21 22:18:15 343

原创 二叉树的最大节点

一.题目描述在二叉树中寻找值最大的节点并返回。样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。二.解题思路定义一个新的节点a,令其值为一个非常小的数,利用前序遍历比较给定节点与a的值,若给定节点比a的值大,则把此节点赋值给a,直至遍历完所有节点,返回的a即为最大

2017-04-21 21:59:26 4724

原创 二叉树的后序遍历

一.题目描述给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]二.解题思路后序遍历与前序遍历中序遍历除了根节点的访问顺序不同,其余都相同.三.实现代码/** * Definition of TreeNode: * class TreeNode {

2017-04-21 21:09:13 148

原创 二叉树的中序遍历

一.题目描述给出一棵二叉树,返回其中序遍历样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].二.解题思路三.实现代码/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *

2017-04-20 22:15:02 166

原创 二叉树的前序遍历

一.题目描述给出一棵二叉树,返回其节点值的前序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].二.解题思路三.实现代码/** * Definition of TreeNode: * class TreeNode { * public: *     int val;

2017-04-20 17:21:24 285

原创 等价二叉树

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

2017-04-20 16:27:49 1963

原创 翻转二叉树

一.题目描述翻转一棵二叉树样例 1 1 / \ / \2 3 => 3 2 / \ 4 4二.解题思路令根节点的左子树等于右子树,右子树等于左子树,利用递归的方法将每一个节点的左右子树翻转,从而完成整个树的翻转.三.实现代码/** * Definition of TreeN

2017-04-19 22:36:05 213

原创 克隆二叉树

一.题目描述深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5二.解题思路三.实现代码/** * Definition o

2017-04-15 15:44:12 284

原创 刘芳20153721--1

作业提交记录及总结通过课堂学习和课下在LintCode上做题,我基本掌握了链表的使用方法,链表可以动态存储数据,解决了顺序存储对空间浪费的缺点.在做题过程中,我发现使用链表时要注意很多小细节,比如说在增加元素时要先处理增加的元素的指向再处理前一个节点的指向,不然就会丢失后面的节点,等等之类的问题一不注意就会Runtime Error或者是Wrong answer,体会到了"实践

2017-03-31 23:32:23 182

原创 链表划分

一.题目给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例:给定链表 1->4->3->2->5->2->null,并且 x=3 返回 1->2->2->4->3->5->null二.解题思路定义两个新链表,遍历给定的链表,将每个节点与给定值x比较,比x小的放在第一个链表中,比x大的放在第二个链表中,最后

2017-03-31 23:15:57 239 1

原创 链表插入排序

一.题目用插入排序对链表排序样例:Given 1->3->2->0->null, return 0->1->2->3->null二.解题思路申请一个新链表,先把给定链表的第一个节点插进去,遍历后面的节点,比第一个大的放后面,比第一个小的放前面,往后以此类推,找到合适的位置插进去.三.实现代码/** * Definition of ListNode * class

2017-03-31 22:57:20 162

原创 链表倒数第n个节点

一.题目找到单链表倒数第n个节点,保证链表中节点的最少数量为n。样例:给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.二.解题思路三.实现代码

2017-03-31 22:43:07 349

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

一.题目给一个链表,两两交换其中的节点,然后返回交换后的链表。样例:给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。二.解题思路定义一个头节点,头节点指向第一个节点,先将前两个节点交换,再让头结点指向交换后的第一个节点,然后将头节点移到交换后的第二个节点,重复刚才的交换步骤,依次往后进行直到最后两个元素.三.实现代码/** * Definit

2017-03-31 20:42:04 655

原创 合并两个排序链表

一.题目将两个排序链表合并为一个新的排序链表样例:给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。二.解题思路用一个新链表储存合并后的元素排列.先比较两个链表的第一个元素,较小的一个作为新链表的第一个元素,然后两个链表依次向后比较,依次放入新链表,直到有一个链表结束,直接将另一个链表全部输出。三.实现代

2017-03-31 20:39:25 342

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

一.题目描述给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在O(1)时间复杂度删除该链表节点。样例:给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。二.解题思路把将要删除的节点的数值改为它下一个节点的数值,再将其下一个节点覆盖.三.实现代码/** * Definition of ListNode * class

2017-03-31 20:06:44 245

原创 链表求和

一.题目你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和.样例:给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null二.解题思路定义一个新链表,第一个元素是将两个链表第一个节点对应的数值相加对10求模,相加后的数

2017-03-31 19:50:24 312 1

原创 翻转链表

一.题目翻转一个链表给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null二.解题思路将第一个节点之后的链存起来,定义一个空节点,使第一个节点指向空,也就是变成新链表的尾节点,再将第二个节点之后的链存起来,使第二个节点指向第一个节点,如此循环,直至使最后一个节点指向倒数第二个节点,完成翻转.三.实现代码/** * Definition

2017-03-31 00:03:23 164

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

一.题目给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例:给出 1->1->2->null,返回 1->2->null给出 1->1->2->3->3->null,返回 1->2->3->null二.解题思路判断每一个节点与其后一个节点的数据是否相等,如果相等就将后一个节点覆盖,如果不相等向后移一个节点重复判断过程,直至最后一个节点.三.实现代码/** 

2017-03-30 23:47:00 195

原创 删除链表中的元素

一.题目删除链表中等于给定值val的所有节点。样例:给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。二.解题思路判断每一个节点的数据是否与所给数据相等,如果相等就将此节点覆盖.三.实现代码/** * Definition for singly-linked list. * struct Li

2017-03-30 23:34:12 316

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

一.题目描述给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。样例:给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.二.解题思路定义两个指针,让一个指针先走,走到第n个节点时另一个指针再开始走,当第一个指针走到最后一个节点时,因为第二个与之相差n步,所以第二个指针在倒数第n+1

2017-03-29 22:58:42 242

空空如也

空空如也

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

TA关注的人

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