自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 R语言svm预测股票走势

library(e1071)a文件样式:xtrainxtesty从开始是因为,如果从1开始结果是这样,svm中必须是数值型的向量,要改变类型//head(ytrain)//[1] "收"     "21.150" "21.000" "21.600" "21.620" "21.330"yytrainytestm

2017-08-08 14:59:36 9345 4

原创 快乐数

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

2017-06-09 20:12:35 920

原创 最长回文串

题目:给出一个包含大小写字母的字符串。求出由这些字母构成的最长的回文串的长度是多少。数据是大小写敏感的,也就是说,"Aa" 并不会被认为是一个回文串。样例给出 s = "abccccdd" 返回 7一种可以构建出来的最长回文串方案是 "dccaccd"。思路:求最长的回文串一般情况下就是求相同字符是偶数的各个偶数相加再加一,当然也有特殊的情况,例

2017-06-09 20:02:42 376

原创 排序专题总结

学排序的时候就觉得排序的算法是非常灵活的,有许多的思路,相同的时间复杂多也有多种算法。这些题目在排序的具体算法上并没有太多的要求,在排序的应用还是比较多的,这些应用使排序显得并不孤立,显得比较有趣。求解实际问题,例如求中位数,求数组的并,合并区间,都非常有意思。在没有排序的时候显得十分复杂,但在排序完成后有种“柳暗花明又一村”的感觉,十分有意思。这些题目并不是很难,思路也不像链表的时那么的多变灵活

2017-06-05 16:16:23 266

原创 合并区间

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

2017-06-05 16:01:27 507

原创 整数排序 II

题目:给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。样例给出 [3, 2, 1, 4, 5], 排序后的结果为 [1, 2, 3, 4, 5]。思路:看到O(nlogn)的时间复杂度我第一个想到的就是sort函数。sort函数的用法也很简单:sort(A.begin(),A.end());

2017-06-05 15:46:52 268

原创 整数排序

题目:给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。样例对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]。思路:运用直接插入排序的算法。从数组的第二个元素开始,和它前面的元素比较,如果该元素小就将前面的元素后移,直到没有比它小的元素赋值到这个位置。如此进行的到最后一个元素就

2017-06-05 15:32:30 294

原创 两数组的交 II

题目:计算两个数组的交样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].思路:和上一个的思路相同,只是不用判断是否重复。首先对两个数组排序,值较小的脚标后移,再进行比较,相等就放入新数组中,两个脚标都后移。直到所有元素比较过后返回新数组就是想得到的数组。代码:class Solution {pub

2017-06-05 15:17:42 212

原创 两数组的交

题目:返回两个数组的交样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2].思路:首先将两个数组排序,这样便于比较并取其交。如果不相等,数值小的数组向后移一位在比较大小,如果相等就判断该值之前是否放入过。排序的后再去交的好处就在于判读之前是否放入过只需看当前要放入的值和前一个判断相等的值是否相等,如果相等说明该值之间放

2017-06-05 15:01:49 235

原创 中位数

题目:给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5思路:中位数就是将数据排序后,位置在最中间的数值。所以先应对数组进行排序,如果是偶数就是第n/2个数,如果是奇数就是第(n+1

2017-06-04 08:22:54 300

原创 两数之和

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

2017-06-03 10:37:49 210

原创 二叉查找树专题总结

二叉查找树的题目并不多,但是二叉查找树的提出和应用还是非常重要的。第一个题就是常规的按照二叉查找树的定义做的一个题,大数在右小数在左,遇到符合条件且是空节点的地方插入想要插入的结点。第二个题的思路一开始并没有想到,一开始的思路较为复杂,实现代码也十分繁琐。运用递归的算法,简练且易懂,但是递归的调用规则并不好想。我自身对于递归的掌握并不是很好,但也着实体会到了递归的简洁和好用。二叉查找树的想法非常好

2017-05-18 23:30:03 226

原创 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 BST.

2017-05-18 23:15:06 252

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

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

2017-05-18 22:53:29 411

原创 二叉树专题总结

二叉树的题普遍比链表的题难,变化也比较多。运用递归的思想很神奇,不好想但是代码很简短。从几种遍历中,递归的思想就运用的很好。层次遍历的遍历方式不太一样,用的队列的思想,运用while一层一层的输出,这个题一开始做的时候改了很长时间,思路虽然不难但是中间有很多易错的地方值得注意。判断是否为等价二叉树,克隆二叉树等运用的递归的算法,是我现在应该扎实掌握的。让我印象最深刻的题就是输出所有路径和二叉搜索树

2017-04-21 19:58:05 274

原创 二叉树的所有路径

题目:给一棵二叉树,找出从根节点到叶子节点的所有路径。样例给出下面这棵二叉树: 1 / \2 3 \ 5所有根到叶子的路径为:[ "1->2->5", "1->3"]思路:       这个题的重点在于如何存储前面的结点的值,用递归的思想。下面说一下具体实现:        首先说一下存储所有路径的函数a

2017-04-21 19:18:45 654

原创 子树

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

2017-04-20 17:06:52 560

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

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

2017-04-12 20:29:42 374

原创 等价二叉树

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

2017-04-12 20:17:55 319

原创 克隆二叉树

题目:深度复制一个二叉树。给定一个二叉树,返回一个他的 克隆品 。样例给定一个二叉树: 1 / \ 2 3 / \4 5返回其相同结构相同数值的克隆二叉树: 1 / \ 2 3 / \4 5思路:建立一个新节点存放当前给出的节点的值,新建的左节点等于给出的左节点,新建的

2017-04-12 20:10:18 218

原创 将二叉树拆成链表

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

2017-04-12 19:43:27 226

原创 二叉树的最大节点

题目:在二叉树中寻找值最大的节点并返回。样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。思路:首先建立一个极小的数x=-1000,便于第一个节的数的录入并且进入递归函数。每一次都先判断当前节点的值和前一个的最大值比较,如果当前节点大记录下最大值和当前节点

2017-04-08 23:42:20 387

原创 翻转二叉树

题目:样例 1 1 / \ / \2 3 => 3 2 / \ 4 4思路:将根节点左节点变成右节点,右节点变成左节点。一层一层地往下遍历,在最后一层转换左右节点,在回溯的时候一层一层的交换左右节点。代码:class Solution {public:    /**

2017-04-08 23:18:41 172

原创 二叉树的最小深度

题目:给定一个二叉树,找出其最小深度。二叉树的最小深度为根节点到最近叶子节点的距离。样例给出一棵如下的二叉树:        1     /     \    2       3          /    \        4      5  这个二叉树的最小深度为 2思路:开始以为和求最大深度似的一只去深度最小,后来想想不

2017-04-08 13:25:28 311

原创 二叉树的最大深度

题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的距离。样例给出一棵如下的二叉树: 1 / \ 2 3 / \ 4 5这个二叉树的最大深度为3.思路:运用递归的思想,一步一步的进行,求出每一步左右子数较大的一个,加一回到上一次,重复前面的步骤求出较大的一个加一回到上一次递归的地方。代码:c

2017-04-08 13:24:26 243

原创 二叉树的层次遍历

题目:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \9 20 / \ 15 7返回他的分层遍历结果:[ [3], [9,20], [15,7]]思路:      返回值是一个以向量为元素的向量,先在函数外定义两个向量std::vec

2017-04-08 13:01:42 276

原创 二叉树的后序遍历

题目:给出一棵二叉树,返回其节点值的后序遍历。样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [3,2,1]思路:首先在函数的外面建立一个独立的向量,用于储存遍历过的元素,最终返回向量。前序遍历是先遍历左子数,将最后一个左节点的值放入向量中,再遍历右子树最遍历根节点,遍历后将节点的数值val放入之

2017-04-08 12:58:43 177

原创 二叉树的中序遍历

题目:给出一棵二叉树,返回其中序遍历样例给出二叉树 {1,#,2,3}, 1 \ 2 / 3返回 [1,3,2].思路: 首先在函数的外面建立一个独立的向量,用于储存遍历过的元素,最终返回向量。前序遍历是先遍历左子树,将最后一个左节点的值放入向量中,再遍历根节点最后遍历右子树,遍历后将节点的数值val放入之前建立的

2017-04-08 12:52:53 213

原创 二叉树的前序遍历

题目:样例给出一棵二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,2,3].思路:        首先在函数的外面建立一个独立的向量,用于储存遍历过的元素,最终返回向量。前序遍历是先遍历根节点,将根节点的值放入向量中,再遍历根节点的左子数最遍历右子数,遍历后将节点的数值val放入之前建立的向量中。在遍历左子

2017-04-07 21:01:37 191

原创 链表专题总结

链表的题目做了入门题和简单题一共十一个题,从一开始的糊里糊涂到后来较为明了,还是很感谢这几个题给我的历练。链表的动态申请空间是一个以前没有接触过的思想,但是很好用,就像链表求和中的应用。链表找下一个节点看地址,前一个存后一个的地址,这样可以知道整个链表的顺序。这个在翻转链表和链表插入排序中的应用非常有效。还有几个题的思想非常奇特,例如寻找倒数第n个元素等。这些题让我更加了解链表,同时也开拓了思路。

2017-03-30 00:14:06 285

原创 链表求和

题目:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例给出两个链表 3->1->5->null 和 5->9->2->null,返回8->0->8->null思路:  链表倒过来的数相加再倒回去,就相当于,链表相应位置对应相加,遇10进位。如果两个链表

2017-03-29 23:57:26 301

原创 翻转链表

题目:翻转一个链表样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null思路:翻转链表最简单的方式是改变链的链接顺序,用三个指针来改变这个顺序。一个指针是前一个节点,一个指针是后一个节点,一个记录后一个节点的后一个节点,保证链表不丢失。把后一个节点的next变成前一节地址。代码:class ListNode {  public:

2017-03-29 22:28:09 317

原创 删除链表中的元素

题目:删除链表中等于给定值val的所有节点。样例给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。思路:首先建立一个头节点记录第一个元素的位置,如果链表没有到走到头,就判断当前节点的值是否等于要删除的值。若等于后一个覆盖前一个删除节点,否则指针下移,继续判断知道走完链表。代码: str

2017-03-28 23:58:24 277

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

题目:给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例给出 1->1->2->null,返回 1->2->null给出 1->1->2->3->3->null,返回 1->2->3->null思路:如果链表是空的则返回空,如果不是空的就判断前后两个节点的值是否相同。如果相同则覆盖,不相同指针下移一位进行下一次比较。代码:class ListNode

2017-03-28 23:39:48 163

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

题目:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.思路:设立两个指针移动,前一个指针移动n-1次时,后一个指针才开始和前一个指针一样开始同步运动。这样,当前一个指针走到倒数第一个,即head->next!=NULL时,后

2017-03-28 23:30:44 189

原创 链表划分

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

2017-03-27 23:58:52 367

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

题目:给一个链表,两两交换其中的节点,然后返回交换后的链表。样例给出1->2->3->4, 你应该返回的链表是2->1->4->3。思路:两两交换节点乍一看好像就是交换两个节点的位置,仔细想一想交换的是数值,两个一组两个一组,只要head->next不是NULL,或者head不是NULL就可以交换俩个节点的值,head节点再移动两个位进行下一次条件的判断。中间值得注意的是,

2017-03-27 23:48:13 287 1

原创 合并两个排序链表

题目:将两个排序链表合并为一个新的排序链表。样例给出 1->3->8->11->15->null,2->null, 返回1->2->3->8->11->15->null。大体思路:这个题是两个链表和在一起,首先应该选择一条链表作为基础,将另一个链表插入到该链表中,由此可知应当建立两个指针分别指向两个链表。我选择了第一条作为基础将第二条插入第一条链表中,因为是插入

2017-03-25 23:38:20 259

原创 链表倒数第n个节点

题目:找到单链表倒数第n个节点,保证链表中节点的最少数量为n。思路:倒数第n个节点和最后一个节点间相隔n-1个节点,如果建立两个指向节点指针想办法让这两个指针之间相差n-1个节点的,两个指针同时移动,一个指针到达最后一个节点则另一个也就到达了倒数第n个节点,如此便找到了倒数第n个节点。但要想到特殊情况的处理,就是给定的链表是空的或者倒数第0个节点如何找到呢?这样的情况统一返回空节点。如果不是这

2017-03-25 23:09:35 392

原创 链表插入排序

题目:用插入排序对链表排序思路:建立一个新的链表,将目标链表依次插入先链表中,小就插到前面,大就插到后面,如此一来,新的链表就是目标链表按大小次序排列的了。先看第一步,将目标链表的第一个元素插入所建立的空链表,具体是先建立一个地值存下头节点的下一个节点的位置,将头节点的next变为空,连到一开始建立好的空节点上,如此一来,新的链表有了最初的一个值。方便后面的数进行比较。每一次都从新链表的头

2017-03-25 23:05:21 229

空空如也

空空如也

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

TA关注的人

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