- 博客(49)
- 收藏
- 关注
原创 xgboost中的单例
/*\brief Get a global instance. */ static TrainingObserver& Instance() { static TrainingObserver observer; return observer; }返回一个引用
2020-04-21 15:03:56
487
原创 xgboost源码
xgboost源码中处理空格的函数static std::string TrimWhitespace(const std::string& str) { const auto first_char = str.find_first_not_of(" \t\n\r"); const auto last_char = str.find_last_not_of(" \t\n\r...
2020-04-21 14:29:25
684
原创 求一个二叉树的任意两个节点的距离
这个题目结合了最小公共祖先和求一个结点的层数两个题首先找到两个结点的最小公共祖先后,二叉树中两个结点的距离问题对于普通的二叉树,如何找到两个给定节点之间的距离?距离是指连接两个节点所需要的最小边的条数。例如下面的二叉树:这个问题很全面的考察了二叉树的相关的知识,建议大家先尝试自己解决分析:假设给定的节点为node1,node2,可以分为下面的两种情况:1)node1是node2...
2019-03-26 22:14:36
2928
原创 排序
1.有大量重复元素: 三路快排2.近乎有序:插入排序3.取值有限“:计数排序4.稳定:归并排序5.链表:归并6.数据量很大,或者内存很小,不足以装在在内存里,使用外排序算法...
2019-01-16 22:39:52
158
转载 Bagging和Boosting的区别(面试准备)
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。Bagging:先介绍Bagging方法:Bagging即套袋法,其算法过程如下:从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进...
2019-01-16 21:43:05
194
转载 C++ size_t 和size_type的区别
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsignedsize_t是全局定义的类型;size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度string::size_type 制类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;siz...
2019-01-10 15:56:25
175
原创 归并排序
一种是由上到下#include <iostream>;using namespace std;void merge(int a[], int start, int mid, int end,int temp[]){ int i = start; int j = mid + 1; int k = 0; while (i <= mid && j <...
2019-01-07 14:12:10
103
原创 类的对象的存储位置
,C++中对象的建立可以在堆和栈上。分别为动态建立和动态建立的方式,构建堆上的对象时一般使用new关键字,而对象的指针在栈上。使用new在堆上构建的对象需要主动的delete销毁。C++对象可以在堆或栈中,函数的传参可以是对象(对象的拷贝),或是对象的指针。而在java中对象一般分配在堆上,对象的传值只有值类型,即对象的引用(地址),这样看来C++要灵活的多。关于c++数组的内存分配还有这里提到的...
2019-01-06 22:40:19
1387
原创 等号操作符重载
等号操作符重载几个关键的步骤1 判断是否是自身相等,若是就直接返回2 释放本身开辟的空间,防止等号后内存泄漏3 执行深拷贝,把需要相等的空间深拷贝,避免内存泄漏Student & operator=(Student & another){ if(this ==&another) return *this if(this->name!=nullptr)...
2019-01-04 22:33:01
1117
转载 C++ this指针与const成员函数
C++ this指针与const成员函数this指针每个对象拥有一个this指针,通过this指针来访问自己的地址。this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。this指针只能在成员函数中使用,全局函数、静态函数都不能使用this指针*在普通成员函数中,this是一个指向非const对象的const指针(如类类型为Student,那么th...
2019-01-04 21:52:17
483
原创 桶排序
时间复杂度因为时间复杂度度考虑的是最坏的情况,所以桶排序的时间复杂度可以这样去看(只看主要耗时部分,而且常熟部分K一般都省去)N次循环,每一个数据装入桶然后M次循环,每一个桶中的数据进行排序(每一个桶中有N/M个数据),假设为使用比较先进的排序算法进行排序一般较为先进的排序算法时间复杂度是O(N*logN),实际的桶排序执行过程中,桶中数据是以链表形式插入的,那么整个桶排序的时间复杂度为:...
2019-01-04 15:53:05
522
原创 析构函数和delete
析构函数是一个对象临死之前会自动调用的函数,用来释放对象内部开辟的堆上的空间,delete区别于c的free的区别就是,delete会自动调用对象的析构函数,然后才会释放对象。保证了内存不泄露...
2019-01-04 15:45:30
565
原创 构造函数的初始化列表
class A{public: A(int a){ cout&lt;&lt;"A()...."&lt;&lt;a&lt;&lt;endl; m_a = a; } void printA(){ cout&lt;&lt;"m_a = &q
2019-01-03 21:37:53
135
原创 leetcode链表的总结
1:找到中间节点:快慢指针的运用while(head->next!=nullptr && head->next->next!=nullptr){ fast = fast->next->next; slow = slow->next;}最后slow就是中间节点2:**两个有序链表的排序问题:**定义一个结构体dummy,d...
2019-01-03 14:51:41
266
原创 pair make_pair
【好记性不如烂笔头:在《C++ Templates》看到这个函数,发现正是前段时间写项目程序所要用到的,可惜当时还不知道有这个用法,当时是自己写了个结构体。。】Utilities 由短小精干的类和函数构成,执行最一般性的工作。这些工具包括:general types一些重要的C函数numeric limitsPairsC++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pa...
2018-12-19 14:24:46
146
原创 109. Convert Sorted List to Binary Search Tree
Convert Sorted List to Binary Search TreeMedium73755FavoriteShareGiven a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.For this problem,...
2018-12-18 23:04:47
125
原创 带有bool返回值的递归
Validate Binary Search TreeMedium1428223FavoriteShareGiven a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node co...
2018-12-18 20:41:34
1933
原创 中序遍历和后序遍历的迭代法
Validate Binary Search TreeMedium1428223FavoriteShareGiven a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node co...
2018-12-18 18:41:15
474
原创 c++多态性 虚函数
c++中多态性是指通过用virtual关键字来绑定同名同参数的函数,实现在编译中进行后绑定,即在编译过程中不绑定类,在运行时与具体的对象进行绑定,这样就可以动态地与实际联系比如一个类 animal 有一个虚函数breath()鱼类 fish 也有函数breath()狗类 dog 函数breath()具体调用时根据你的对象是鱼类还是狗类有关C++的多态性用一句话概括就是:在基类的函数...
2018-12-11 10:29:07
235
1
原创 102. Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example:Given binary tree [3,9,20,null,null,15,7],3/ 9 20/ 15 7retu...
2018-12-04 16:15:48
140
原创 树的中序用栈
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */clas...
2018-12-04 15:23:30
135
原创 strstr memset strcpy feof sizeof strlen strrchr strchr
1 strstr(str1,str2) 此时千万要记住,这是在判断str2是否是str1的子串!!strstr方法会比较str1和str2,判断str2是否是str1的子串,如果是,则返回str2在str1中首次出现的地址;如果不是,则返回null;2 memset 函数是内存赋值函数,用来给某一块内存空间进行赋值的。 其原型是:void* memset(void *_Dst, int ...
2018-12-04 11:24:00
171
1
原创 static
static类成员变量:1 static类的成员变量是和类进行绑定的,不是和对象绑定,如果一个类的static成员变量变成了1,另外的成员变量的该值也变成了1,。2 static成员变量先于对象存在,因为它不与对象绑定,必须在类外进行初始化3 static成员变量存在于静态存储区,不在堆或者栈里面,假设创建了100个成员,也只会创建一个static成员变量static类成员函数:没有t...
2018-11-30 09:48:14
3918
原创 关于adaboost
到这里,也许你已经对adaboost算法有了大致的理解。但是也许你会有个问题,为什么每次迭代都要把分错的点的权值变大呢?这样有什么好处呢?不这样不行吗? 这就是我当时的想法,为什么呢?我看了好几篇介绍adaboost 的博客,都没有解答我的疑惑,也许大牛认为太简单了,不值一提,或者他们并没有意识到这个问题而一笔带过了。然后我仔细一想,也许提高错误点可以让后面的分类器权值更高。然后看了adaboos...
2018-11-30 09:42:17
132
转载 svm
SVM 的推导、特点、优缺点、多分类问题及应用作者:keeprederSVM有如下主要几个特点:(1) 非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;(2) 对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;(3) 支持向量是SVM的训练结果,在SVM分类决策中起决定作用的是支持向量。(4) SVM 是一种有坚...
2018-11-28 23:41:10
1337
原创 morris
Morris则是使用时间换空间的思想,先来看看Morris中序遍历二叉树的算法实现:/** *morris中序遍历二叉树 */void morris_inorder(BiTree T) { BNode *p, *temp; p = T; while(p) { if(p->left == NULL) { printf("%...
2018-11-28 11:38:37
241
原创 export extern
17、export 使用该关键字可实现模板函数的外部调用。对模板类型,可以在头文件中声明模板类和模板函数;在代码文件中,使用关键字export来定义具体的模板类对象和模板函数;然后在其他用户代码文件中,包含声明头文件后,就可以使用该这些对象和函数。18、extern当出现extern “C”时,表示 extern “C”之后的代码按照C语言的规则去编译;当extern修饰变量或函数时,表示...
2018-11-22 22:10:28
644
原创 84. Largest Rectangle in Histogram
Given n non-negative integers representing the histogram’s bar height where the width of each bar is 1, find the area of largest rectangle in the histogram.Above is a histogram where width of each b...
2018-11-22 21:23:52
111
原创 32. Longest Valid Parentheses
Given a string containing just the characters ‘(’ and ‘)’, find the length of the longest valid (well-formed) parentheses substring.Example 1:Input: “(()”Output: 2Explanation: The longest valid pa...
2018-11-22 19:51:48
100
原创 new 和 delete 关键字
先说说自己的理解:new 是用来动态申请内存的关键字delete 是用来清除并且释放内存new[]/delete[] 成队使用更好使用new关键字计算机自己的过程:1 首先调用operater new标准库函数,来分配足够的的内存2 运行该类型的相应的构造函数来初始化对象3 返回处理后的指向对象的指针...
2018-11-22 19:26:47
206
原创 kmp算法
Implement strStr().Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.Example 1:Input: haystack = “hello”, needle = “ll”Output: 2Example 2:In...
2018-11-20 20:38:35
118
原创 5. Longest Palindromic Substring
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example 1:Input: “babad”Output: “bab”Note: “aba” is also a valid answer.Example ...
2018-11-20 15:06:31
169
原创 25. Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.k is a positive integer and is less than or equal to the length of the linked list. If the number of n...
2018-11-16 22:03:40
102
原创 61. Rotate List
Given a linked list, rotate the list to the right by k places, where k is non-negative.Example 1:Input: 1->2->3->4->5->NULL, k = 2Output: 4->5->1->2->3->NULLExplanati...
2018-11-16 20:43:05
83
原创 贝叶斯优缺点
朴素贝叶斯的主要优点有:1)朴素贝叶斯模型有稳定的分类效率。2)对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练。3)对缺失数据不太敏感,算法也比较简单,常用于文本分类。朴素贝叶斯的主要缺点有: 1) 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假...
2018-11-14 11:39:16
14956
原创 92.Reverse Linked List II
单链表的尾插法,1->2->3->4->5->6如果要变成1->5->4->3->2->6其实就是每次都把一个node插到当前的头部1->2->3->4->5->6head指向1,prev指向2,cur指向3prev->next = cur->next;cu
2018-11-13 16:33:25
82
原创 82. Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.Example 1:Input: 1->2->3->3->4->4->5Output: 1->2-...
2018-11-09 18:11:57
115
原创 堆排序
堆排序是将整个数组用完全二叉树的形式存,即如果根节点的下标是0,那么左子树的下标2i+1,右子树的下标是2i+2第一次先生成一个大顶堆或者小顶堆,然后把根节点与最后一个节点交换,这样就相当于在数组最后变成了最大或者最小的值,然后再遍历从n-1到1,之所以不用遍历0,因为0是根节点,已经变成有序.时间复杂度:一.初始化建堆 初始化建堆只需要对二叉树的非叶子节点调用adjusthead()...
2018-11-07 17:09:28
761
原创 23. Merge k Sorted Lists
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.Example:Input:[1->4->5,1->3->4,2->6]Output: 1->1->2->3->4->4->...
2018-11-07 15:33:50
92
原创 merge two linkedList
第一种方法是非递归: ListNode* merge2Lists(ListNode* node1,ListNode* node2){ if(node1==NULL) return node2; if(node2==NULL) return node1; ListNode* res = node1->val < node2->...
2018-11-07 14:07:50
201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人