自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wx20153724的博客

作业提交平台(题目重复时只写一遍)

  • 博客(44)
  • 收藏
  • 关注

原创 恢复旋转排序数组

恢复旋转排序数组题目描述:给定一个旋转排序数组,在原地恢复其排序。样例[4, 5, 1, 2, 3] -> [1, 2, 3, 4, 5]解题思路:用sort函数即可。代码实现:class Solution {public:    void recoverRotatedSortedArray(vector &nums) {     

2017-06-08 17:28:50 256 1

原创 合并排序数组

合并排序数组题目描述:合并两个排序的整数数组A和B变成一个新的数组。样例给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]解题思路:把两个数组合并为一个,再用sort()重新排序即可。代码实现:class Solution {public:    /**     * @param A

2017-06-08 17:22:24 395

原创 20153724--3

排序模块总结提交作业如图:总结:我觉得排序这一模块吧,主要看算法技巧。一行好的代码起到的作用相当于好几行普通代码。有时候自己绞尽脑汁也达不到数据百分百通过时,参考下别人的代码会发现,原来可以那么简洁的表达出来。我觉得我这块学的不太好,各种排序方法有点混,编程序的时候已经达不到题目要求的时间复杂度。

2017-06-04 17:58:39 200

原创 合并区间

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

2017-06-03 20:10:35 349

原创 整数排序

整数排序题目描述:给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。解题思路:sort()函数就是O(n log n) 的算法。代码实现:class Solution {public: 

2017-05-28 12:22:46 391

原创 最长回文串

最长回文串问题描述:给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。数据是大小写敏感的,也就是说,"Aa" 并不会被认为是一个回文串。样例给出 s = "abccccdd" 返回 7一种可以构建出来的最长回文串方案是 "dccaccd"。解题思路:先对给定的字符串排序,然后比较相邻元素是否相同,计算其相同个数,然后整除2

2017-05-21 18:27:14 848

原创 哈希函数

哈希函数问题描述:在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数可以尽可能少地产生冲突。一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基于33的一个大整数,比如:hashcode("abcd") = (ascii(a) * 333 + ascii(b) * 332 + ascii(c) *33 +

2017-05-21 16:51:44 265

原创 子数组之和

子数组之和问题描述:给定一个整数数组,找到和为零的子数组。你的代码应该返回满足要求的子数组的起始位置和结束位置。样例给出 [-3, 1, 2, -3, 4],返回[0, 2] 或者 [1, 3].解题思路:我的想法是数组的第一个值开始往后加,,每加一个值,把sum存一下,若能得到两个值相同的sum,则找到了一个和为0的子数组,子数组的范围就是第一个s

2017-05-21 15:55:00 1189

原创 快乐树

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

2017-05-21 10:30:44 250

原创 两数组的交2

两数组的交2问题描述:计算两个数组的交。样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].解题思路:此题与两数组的交解题思路相同,只需要把去重操作去掉即可。代码实现:class Solution {public:    /**     * @param nums1 an integer a

2017-05-21 10:12:28 230

原创 两数组的交

两数组的交问题描述:返回两个数组的交。样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].解题思路:先对给定的两个数组排序,在利用unique()函数去重,最后遍历两数组比较值。代码实现:class Solution {public:    /**     * @param nums1 an inte

2017-05-21 10:02:52 660

原创 两数之和

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

2017-05-19 16:41:52 166

原创 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 greater t

2017-05-11 22:18:08 232

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

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

2017-05-11 22:02:41 544

原创 20153724——2

作业二总结提交作业如图:

2017-04-21 20:37:02 167

原创 将二叉树拆成链表

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

2017-04-21 19:39:45 191

原创 克隆二叉树

克隆二叉树问题描述:深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5解题思路:利用前序遍历,将给定的树复制一遍即可。代码实现:cl

2017-04-21 19:16:55 197

原创 子树

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

2017-04-18 21:39:02 231

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

把排序数组转化为高度最小的搜索二叉树题目描述:给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7解题思路:二叉搜索树是左子树的值比根结点小,根结点的值比右子树小的树(假设左右子树都存在的

2017-04-18 17:24:03 372

原创 二叉树的路径和

二叉树的路径和问题描述:给定一个二叉树,找出所有路径中各节点相加总和等于给定目标值 的路径。一个有效的路径,指的是从根节点到叶节点的路径。样例给定一个二叉树,和 目标值 = 5: 1 / \ 2 4 / \ 2 3返回:[ [1, 2, 2], [1, 4]]解题思路:根据前序遍历的思路,利

2017-04-18 12:33:51 398

原创 二叉树的所有路径

二叉树的所有路径题目描述:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]解题思路:根据前序遍历的思路,利用局部变量的优点,将从根结点到每一个叶子结点的路径全都插入到向量中去。代码实现:cl

2017-04-18 12:04:57 250

原创 二叉树的层次遍历

二叉树的层次遍历题目描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)。样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]解题思路:利用队列的特性,

2017-04-18 11:53:23 307

原创 等价二叉树

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

2017-04-09 19:49:38 255

原创 克隆二叉树

克隆二叉树问题描述:深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5解题思路:利用递归算法,前序遍历原二叉树,把遍历到的结点的值赋给相同位

2017-04-09 19:32:38 213

原创 翻转二叉树

翻转二叉树题目描述:翻转一棵二叉树。样例 1 1 / \ / \2 3 => 3 2 / \ 4 4解题思路:利用递归算法,交换左子树和右子树。实现代码:class Solution {public:    /**     * @param root: a Tr

2017-04-09 19:17:42 148

原创 二叉树的最小深度

二叉树的最小深度

2017-04-09 10:11:03 280

原创 二叉树的最大深度

二叉树的最大深度

2017-04-09 09:38:02 158

原创 后序遍历

后序遍历

2017-04-08 11:34:32 231

原创 中序遍历

中序遍历问题描述:给出一棵二叉树,返回其中序遍历。样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].解题思路:用递归算法按照中序遍历访问二叉树的结点,并把访问到的结点值存放到向量中。代码实现:class Solution {    /**     * @param root: The

2017-04-08 11:27:27 360

原创 前序遍历

前序遍历问题描述:给出一棵二叉树,返回其节点值的前序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].解题思路:用递归算法按照二叉树的前序遍历访问树结点,并把访问到的结点的值存在向量中。代码实现:class Solution {public:    /**     

2017-04-08 11:20:37 274

原创 二叉树的最大结点

二叉树的最大结点

2017-04-08 10:59:35 2590

原创 20153724--1

作业1总结提交作业如图:对此总结:单链表对我来说是一个全新的认识点,它和数组有相似的地方,但是克服了数组的缺点。单链表是动态存储元素的,这使得很多问题得到了更简便的解决办法或者使某些用数组不能解决的问题得到了解决。在做单链表题的过程中,遇到了各种各样的困难,有的是思路打不开,有的是考虑不周,还有细节处理不好导致Runtime Error等错误,但是最后通过多种方法都被解决了(包括上

2017-03-30 21:04:43 197

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

两两交换链表中的结点问题描述:给一个链表,两两交换其中的结点,然后返回交换后的链表。 如给定1->2->3->4->NULL;return 2->1->4->3->NULL.挑战:你的算法只能使用常数的额外空间,并且不能只是单纯的改变结点内部的值,而是需要实际的进行结点交换。 解题思路: 若给定的链表为空或者只有一个结点,则返回原链表即可;若给定的链表至少有2个结点,则需要申请三个

2017-03-30 16:21:26 569

原创 合并两个排序链表

合并两个排序链表问题描述:将两个排序链表合并为一个新的排序链表    如给出 1->3->8->11->15->NULL,2->NULL, 返回 1->2->3->8->11->15->NULL。解题思路:申请一个新结点,从两个链表头开始遍历,若遍历到l1的结点值比较小,则新结点的next指向此结点,这时l1往下继续遍历,l2不变;否则指向l2的结点,l2继续向下遍历,l1不变。以此类推。

2017-03-28 12:59:43 287

原创 中位数

中位数问题描述:给定一个未排序的整数数组,找到其中位数。  中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。  如给出数组[4, 5, 1, 2, 3], 返回 3  ;给出数组[7, 9, 4, 5],返回 5。解题思路:对给定的数组从小到大排序,若为奇数返回中间值,若为偶数返回排序后的第N/2个数。实现代码:class Solution {

2017-03-26 10:45:50 400

原创 链表划分

链表划分问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。  你应该保留两部分内链表节点原有的相对顺序。   如给定链表 1->4->3->2->5->2->NULL,并且 x=3  返回 1->2->2->4->3->5->NULL。解题思路:创建两个新链表,分别设为1,2;遍历给定链表,比较每个结点与给定值X值的大小,若比X小,则放入新链表1中

2017-03-26 10:24:18 222

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

删除排序链表中的重复元素问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。  如给出 1->1->2->3->3->null,返回 1->2->3->null。解题思路:新申请一个链表空间,将给定链表的第一个结点插进去,然后遍历给定链表的每一个结点,若与新链表的最后一个结点值不等,则把此结点的值赋给新链表的下一个结点,然后继续遍历,否则直接遍历原链表不进行赋值操作。实现

2017-03-26 10:21:13 226

原创 翻转链表

翻转链表问题描述:  翻转一个链表              如给出一个链表1->2->3->NULL,这个翻转后的链表为3->2->1->NULL.解题思路:改变指针链的方向,让当前结点的后一结点指向当前结点,而当前结点指向它的前结点,从原链表的第一个结点开始遍历操作此步骤。实现代码:

2017-03-26 10:01:25 185

原创 链表插入排序

链表插入排序问题描述:用插入排序对链表排序   如给定1->3->2->0->NULL;返回0->1->2->3->NULL.解题思路:申请一个新链表,先把给定结点的第一个结点插进去,遍历之后的结点,与第一个结点比较大小,若较大则插在后面,较小则插在前面,继续遍历,在新链表中找到合适的位置插进去。实现代码:                                 class

2017-03-26 09:41:24 316

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

在O(1)时间复杂度删除链表节点问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。     如给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。解题思路:把要删除结点的后一结点的值赋给此结点,删除此结点的后一结点。代码实现:                        class

2017-03-25 19:05:45 526

空空如也

空空如也

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

TA关注的人

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