自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CART回归树 GBDT XGB LGB

CART回归树 GBDT XGB LGB1. 决策树 ID3, C4.5, CART决策树算法原理(上)CART树首先我们看看决策树算法的优点:1)简单直观,生成的决策树很直观。2)基本不需要预处理,不需要提前归一化,处理缺失值。3)使用决策树预测的代价是O(log2m)。 m为样本数。4)既可以处理离散值也可以处理连续值。很多算法只是专注于离散值或者连续值。5)可以处理多维度输出的分类问题。6)相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的解释7)可以交叉验证的剪枝来

2021-10-14 17:19:53 503

原创 不含连续1的非负整数 字典树

600. 不含连续1的非负整数2021.9.11600. 不含连续1的非负整数题解class Solution {public: int findIntegers(int n) { // 预处理第 i 层满二叉树的路径数量 vector<int> dp(31); dp[0] = dp[1] = 1; for (int i = 2; i < 31; ++i) { dp[i] = dp[

2021-09-11 10:06:46 82

原创 面试题 17.14. 最小K个数

面试题 17.14. 最小K个数2021.9.3面试题 17.14. 最小K个数class Solution {public: vector<int> smallestK(vector<int>& nums, int k) { qsort(nums,k,0,nums.size()-1); return res; }private: vector<int> res; void

2021-09-03 10:33:50 73

原创 你能穿过矩阵的最后一天 并查集

1970. 你能穿过矩阵的最后一天2021.8.161970. 你能穿过矩阵的最后一天题解class Solution {private: vector<int> fa; int findset(int x) { return x == fa[x] ? x : fa[x] = findset(fa[x]); } void unite(int x, int y) { fa[findset(x)] = findset(y); } bool co

2021-08-16 10:35:27 75

原创 5196. 队列中可以看到的人数 单调栈

5196. 队列中可以看到的人数 单调栈2021.7.255196. 队列中可以看到的人数对第 ii 个人来说,他能看到的人中,靠右的不能被靠左的挡住,所以这些人从左往右的高度必须是严格单调递增的。因此可以倒序遍历 heights,用单调栈来维护人的高度,将 heights[i] 压入单调栈的同时,统计栈内比他矮的人数,压栈结束时,若栈不为空,则说明第 ii 个人还可以再看到一个人。从后往前遍历,关键要点是:如果当前高度大于栈顶,则这个栈顶对于再往前的其他人没有贡献,可以将其弹栈。class S

2021-07-25 14:48:25 156

原创 1938. 查询最大基因差 离线询问 + 字典树

1938. 查询最大基因差 离线询问 + 字典树2021.7.221938. 查询最大基因差1707. 与数组中元素的最大异或值https://leetcode-cn.com/problems/maximum-xor-with-an-element-from-array/solution/yu-shu-zu-zhong-yuan-su-de-zui-da-yi-huo-7erc/将值建立为字典树,按查询顺序逐步建立字典树即可。struct Trie{ const int L

2021-07-22 15:12:47 64

原创 自定义比较函数,切记要加引用

sort自定义一定要加引用!否则有些数据结构它会使用拷贝复制的方式比较,时间可能多几倍!vector<vector<int>>& queries;struct cmp{ bool operator()(vector<int>& a, vector<int>& b){ // 切记加引用!!! return a[1]<b[1]; } };sort(queries.begin(),que

2021-07-22 14:44:00 72

原创 1937. 扣分后的最大得分

1937. 扣分后的最大得分2021.7.22leetcode一些细节值得学习:二维数组作为滚动数组;将每行的O(n*n)的时间复杂度合并为O(n)代码示例typedef long long LL;const LL INF = 1e10;const int maxn = 1e5 + 10;LL dp[2][maxn]; //利用滚动数组进行优化数组class Solution {public: long long maxPoints(vector<vect

2021-07-22 11:41:33 92

原创 multiset

multisetmultiset多集,和优先队列类似,都可以自动排序。multiset可以包含重复元素。比优先队列好的一点是,multiset可以删除其中某个元素。heights.erase(heights.find(temp));multiset也可以自定义struct rec{ int x,y;};struct cmp{ bool operator()(const rec&a,const rec&b){ return a.x<b.x|

2021-07-13 12:59:12 239

原创 lower_bound( ),优先队列自定义

lower_bound( )以及优先队列自定义lower_bound( )和upper_bound( )lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。在从小到大的排序数组中,lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upper_bound

2021-07-10 10:59:26 860

原创 求子数组:前缀和+哈希表

前缀和+哈希表求子数组/区间段的题目常使用前缀和+哈希表如930. 和相同的二元子数组思路及算法class Solution {public: int numSubarraysWithSum(vector<int>& nums, int goal) { int sum = 0; unordered_map<int, int> cnt; int ret = 0; for (auto& n

2021-07-08 23:26:28 56

原创 map自定义比较,int/string转换,c++字典序比较

map自定义比较,int/string转换,c++字典序比较map自定义比较struct CmpByKeyLength { bool operator()(const string& k1, const string& k2) { return k1.length() < k2.length(); }};int main() { map<string, int, CmpByKeyLength> name_score_map; name_sc

2021-07-06 20:31:38 282

原创 剑指 Offer 12. 矩阵中的路径

剑指 Offer 12. 矩阵中的路径2021.7.5leetcode一些细节值得学习:不使用visited数组,直接将访问使用的格子对应的字母改成了一个不可用的“\0”;不使用direction数组,直接四个方向的布尔值结果或起来;将单词第一个字母的搜索也纳入迭代。我的代码class Solution {public: bool find(vector<vector<char>>& board, vector<vector<bool

2021-07-05 10:53:02 51

原创 剑指 Offer 09. 用两个栈实现队列

剑指 Offer 09. 用两个栈实现队列2021.7.5leetcode非常巧妙,每次都是把队列中的一段消化完,才会在两个栈间交换数据。class CQueue {public: CQueue() { } void appendTail(int value); int deleteHead();private: stack<int> st1,st2;};//队尾增加数据void CQueue::appendT

2021-07-05 10:14:07 38

原创 剑指 Offer 07. 重建二叉树

剑指 Offer 07. 重建二叉树2021.7.5leetcode自己的基本思路也是递归思路,但是有一个小技巧。前序遍历可以直接确定根节点,中序遍历只要是确定根节点左右两边子树的长度,所以中序遍历可以直接放到字典里去,直接映射 值->位置。class Solution {public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { this

2021-07-05 09:46:49 52

空空如也

空空如也

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

TA关注的人

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