- 博客(8)
- 收藏
- 关注
转载 决策树算法
转自:https://www.cnblogs.com/pinard/p/6050306.html 决策树算法在机器学习中算是很经典的一个算法系列了。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。本文就对决策树算法原理做一个总结,上篇对ID3, C4.5的算法思想做了总结,下篇重点对CART算法做一个详细的介绍。选择CART做重点介绍的原因是scikit-lear...
2018-03-29 09:20:58 182
原创 数组的前k个最大值
方法一:使用最小堆。 1、用前k个元素建立一个最小堆;2、遍历无序区域的元素,和堆顶元素对比,如果小于堆顶值,肯定不可能是前k个最大值;如果大于堆顶值,那么取代堆顶元素,做一次堆调整。//最小堆的调整void heap_adjust_for_maxK(int arr[], int s, int end){ //对堆进行一次调整 //方法:(以大顶堆为例)比较父节点和两个子节点的大小:如果父...
2018-03-28 18:08:49 1647
原创 排序算法总结
记录插入排序、选择排序、快速排序、归并排序算法的实现和它们的时间复杂度。1、常用排序算法分类2、算法复杂度3、排序算法实现 3.1 简单插入排序 3.2 希尔排序 3.3 冒泡排序 3.4 快速排序 3.5 简单选择排序 3.6 堆排序 3.7 归并排序1、常用排序算法分类2、算法复杂度上图来自:http://blog.csdn.net/hguisu/ar...
2018-03-27 13:15:08 176
原创 复杂链表的复制
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)步骤1、复制旧的链表,每个节点都复制一份插入当前节点之后(random指针此时不赋值)2、给新链表的random指针复制,偶数节点需要复制。random指针指向前节点randon...
2018-03-22 23:38:50 128
原创 找到链表环的入口
题目描述一个链表中包含环,请找出该链表的环的入口结点。思路1、设置一对快慢指针,都从链表头出发(快指针每次走两步,慢指针每次一步)2、找到两个指针在环上的相遇点3、设置两个指针,分别从链表头和相遇点出发4、上面两个指针相遇的地方即为环入口ListNode* EntryNodeOfLoop(ListNode* pHead){ if(pHead == NULL || pHead->ne...
2018-03-22 17:01:36 490
原创 两个链表的第一个公共结点
题目描述输入两个链表,找出它们的第一个公共结点。思路1:设两个链表公共的长度为s,链表1的长度为m+s,链表2的长度为n+s。两个移动指针分别从两个链表开始移动:p1: 链表1头部->走到尾部->链表2头部 ->公共结点p2: 链表2头部->走到尾部->链表1头部 ->公共结点p1走的步数为m+s+n,p2走的步数为n+s+mListNode* FindFi...
2018-03-21 10:59:37 168
原创 链表-找到链表中倒数第k个结点
思路:定义快慢两个指针,快指针先走k-1步,然后快慢两个指针同时向前,当快指针走到最后一个节点,慢指针此时就在倒数第k个节点。按照上面的思路,会出现一个特殊情况:当链表长度小于k时,快指针在k-1步之内就会指向NULL,此时应该返回空;typedef struct{ int data; LinkNode* next; }LinkNode; LinkNode* ...
2018-03-21 00:28:00 146
原创 链表逆序
解法一:遍历看了其它的一些解法,都是画一排图,搞得很复杂。其实这道题就是不断的删除一个链表的头节点,再将该节点插到另一个链表的头节点之前。实现步骤:①初始化一个新链表的头节点pNewHead = NULL;②旧链表的头节点后移;③旧链表不要的节点送给新链表;④重复②typedef struct{ int data; LinkNode* next; }LinkNode; ...
2018-03-20 23:33:57 237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人