自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【科学刷题】完结篇汇总

完结【科学刷题】3种方法花式求解 X 的平方根【科学刷题】最大和与最大乘积问题,从一维到二维【科学刷题】子数组和问题【科学刷题】树的子结构与子树判断【科学刷题】彻底搞定二分算法所有题型部分完结【科学刷题】字符串(大数)的加减乘法【科学刷题】完全吃透回溯法所有题型正在施工【科学刷题】完全吃透所有排序算法【科学刷题】最长递增子序列:从1维到3维【科学刷题】完全吃透所有链表题【科学刷题】跳台阶:难度逐渐变态【科学刷题】归并排序应用题...

2021-05-23 00:10:49 592 2

原创 LightGBM 源码学习 (2022-5)

之前在Linux系统上调试的博文:LightGBM源码学习准备篇系统:MacOS软件:Clion感觉最新的commit可能有坑,退回到2021年年初的commit 【code-link】git checkout 967b45c68665488ac872f77848f516d84a70726cgit checkout -b tqc_mod参考这个文章 stackoverflow,成功在MacOS编译LightGBM安装两个依赖brew install llvmarch -x86

2022-05-15 11:21:59 623

原创 解决VSCode终端不适配“agnoster“字体的情况

https://www.coder.work/article/6396494

2022-02-07 10:43:03 770

原创 TPE原理总结

hyperopt - TPE在hyperopt/tpe.py:935 处打一断点5:超参的取值3:loss的取值{'GMM1', 'GMM1_lpdf', 'len', 'dict', 'literal', 'broadcast_best', 'getitem', 'sub', 'array_union', 'mul', 'add', 'ap_split_trials', 'adaptive_parzen_normal', 'pos_args'}重点看一下hyperopt.tpe.buil

2021-11-05 22:46:03 1268

原创 无锁队列学习

深入原理 - 使用CAS实现无锁队列深入理解一致性与 C++ 内存模型Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms文章目录CASEnQueuefinalCASbool compare_and_swap(int *addr, int oldval, int newval){ if( *addr != oldval ){ return false; } *ad

2021-11-01 13:11:54 245

原创 【科学刷题】并查集

算法笔记 - 并查集 - 目录算法笔记 - 并查集 - 定义微软10-28下午的二面考了并查集,没写出来,羞耻今天写3道题,省份的数量,冗余连接,打砖块547. 省份数量class UnionSet{private:int cnt;vector<int> parent;public: UnionSet(int n):cnt(n){ for(int i=0;i<n;++i) parent.emplace_back(i); } int

2021-11-01 12:25:29 247

原创 C++并发编程学习

文章目录1. Leetcode并发题1.1 按序打印1.2 交替打印FooBar1. Leetcode并发题博客园 - C++11 并发指南系列std::condition_variable1.1 按序打印1114. 按序打印#include <functional>#include <semaphore.h>using namespace std;class Foo {protected: sem_t first_done; sem_t se

2021-10-31 21:25:36 219

原创 LightGBM源码学习

知乎 - LightGBM 源码剖析文章目录从main到GBDT::Train执行路径重点看一下TrainOneIter从main到GBDT::Train执行路径main函数执行路径Application::Trainsrc/application/application.cpp:200boosting_->Train(config_.snapshot_freq, config_.output_model);去看boostinginclude/LightGBM/boosting

2021-10-17 14:50:02 1060

原创 sLSM-Tree 源码学习

文章目录LSM参数LSM --- insert_keyLSM --- delete_keyLSM --- lookupLSM参数参数名demo给的默认值参数含义eltsPerRun800每个run(skiplist)最大的KV数目numRuns20内存层最多能持有多少 跳表merged_frac1.0每次merge的时候merge多少占比的缓冲区runs,如果是1全部merge。 代码中用于计算_frac_runs_mergedbf_fp0.001

2021-10-11 23:10:43 605

原创 模型压缩学习

文章目录模型压缩日积月累[解读模型压缩系列 (目录)](https://zhuanlan.zhihu.com/p/370540483)解读模型压缩0:衡量模型复杂度的指标解读解读模型压缩1:轻量化模型设计新思路:加法神经网络的故事模型压缩日积月累解读模型压缩系列 (目录)解读模型压缩0:衡量模型复杂度的指标解读参数量计算:解读模型压缩1:轻量化模型设计新思路:加法神经网络的故事...

2021-10-11 13:27:02 176

原创 C++ / 操作系统 / 网络 面经汇总

个人面经3:操作系统如何理解互斥锁、条件锁、读写锁以及自旋锁?个人面经2:数据库个人面经1:C++

2021-10-07 23:25:56 252

原创 leveldb 原理学习

leveldb - cmakeleveldb_1.17_annotatedleveldb 实现解析XiaoLong - leveldblinux代码阅读分析工具Scitools Understand知乎 - LevelDB 完全解析LSM有动图知乎 - 深入浅出分析LSM树(日志结构合并树)java实现LSM从零开始写数据库:500行代码实现 LSM 数据库...

2021-10-07 22:00:52 250 1

原创 Redis源码学习

Redis 命令参考1. 数据结构【大课堂】Redis 简介——为什么选择Redismemcached和redis性能差不多(10-30w qps)Memcached 是多线程,非阻塞 IO 复用的网络模型;Redis 使用单线程的多路 IO 复用模型(Redis 6.0 引入了多线程 IO )redis提供更丰富的附加功能:发布订阅模型、Lua脚本、事务等redis过期数据的删除策略有惰性删除和定期删除,而Memcached 只有惰性删除最详细的Redis五种数据结构详解(理论+实战)吊打

2021-10-07 10:17:25 242

原创 Optuna源码剖析

对于单目标优化,默认用TPESampler(默认参)optuna.samplers._tpe.sampler.TPESamplerclass TPESampler(BaseSampler): def __init__( self, consider_prior: bool = True, prior_weight: float = 1.0, consider_magic_clip: bool = True, con

2021-10-02 21:05:51 552

原创 LDA学习

1. MCMC知乎 - 马尔可夫链蒙特卡罗算法(MCMC)微信 - 告别数学公式,图文解读什么是马尔可夫链蒙特卡罗法 知乎 - 先验分布、后验分布、似然估计这几个概念是什么意思,它们之间的关系是什么?2. PLSA知乎 - pLSA原理及其代码实现博客园 - LSA,pLSA原理及其代码实现https://github.com/hitalex/PLSAhttps://github.com/hitalex/lda-with-gibbslen(corpus.vocabulary)2126l

2021-09-07 14:18:46 214

原创 Learning To Rank 学习

pairwise 的排序算法用于推荐系统的排序任务中为什么效果差于pointwise的ctr?Ranking 模型可以粗略分为基于相关度和基于重要性进行排序的两大类。早期基于相关度的模型,通常利用 query 和 doc 之间的词共现特性(如布尔模型)、VSM(如 TFIDF、LSI 等)、概率排序思想(BM25、LMIR 等)等方式。基于重要性的模型,利用的是 doc 本身的重要性,如 PageRank、TrustRank 等。这里我们关注基于相关度的 ranking。评价指标IR的评价指标-

2021-09-03 17:43:22 246

原创 C++设计模式学习

单例模式单例模式用来创建全局唯一的对象。一个类只允许创建一个对象(或者叫实例),那这个类就是一个单例类,这种设计模式就叫作单例模式。单例有几种经典的实现方式,它们分别是:饿汉式、懒汉式、双重检测、静态内部类、枚举。工厂模式工厂模式包括简单工厂、工厂方法、抽象工厂这3种细分模式。其中,简单工厂和工厂方法比较常用,抽象工厂的应用场景比较特殊,所以很少用到,不是我们学习的重点。工厂模式用来创建不同但是相关类型的对象(继承同一父类或者接口的一组子类),由给定的参数来决定创建哪种类型的对象。实际上,如果创建

2021-08-29 17:28:11 280

原创 微软面试题 --- 字典序转正常序

微软苏州STCA SWE一二三四面面经手撕字典序数组还原成正常排序1111112...9注释就不写了,常规的建树+树的层序遍历,dddd(懂的都懂)#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author : qichun tang# @Date : 2021-08-29# @Contact : [email protected] numpy as npnp.random.seed.

2021-08-29 14:51:06 451 1

原创 决策树时间复杂度优化

My DecisionTreeClassifier:[0.96666667 0.96666667 0.86666667 0.9 1. ]cost time = 0.117Sklearn DecisionTreeClassifier:[0.96666667 0.96666667 0.9 0.96666667 1. ]cost time = 0.007My DecisionTreeClassifier:[0.61111111 0.5

2021-08-04 14:01:49 554

原创 shopee面筋梳理

文章目录链接算法题数学题ML/DL 知识数据库操作系统链接shopee-2022提前批-算法工程师-凉经Shopee新加坡数据分析面经算法题100万 0到1万随机乱序数,o(n)下,找中位数算法题: 最长公共子串 (耗时22分钟)十分钟思考 12分钟写算法题: 有三个子节点的树的层序遍历,并且实现测试用例编写和测试输出。 这道题半小时写完,既写层序遍历,还需要手写测试用例。给定一个列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],给定一个k值,从这个列表中选取一个sub_

2021-07-25 14:05:12 360

原创 数据流中第K大元素

703. 数据流中的第 K 大元素手撕def swim(heap, i): '''上浮, 插入一个新元素后,尽量往上爬''' while i > 0: pi = (i - 1) // 2 if heap[pi] > heap[i]: heap[pi], heap[i] = heap[i], heap[pi] i = pi else: breakdef

2021-07-17 01:02:12 235

原创 回文对 - 紧急梳理

虾皮的一个面试题,紧急梳理一下思路是将时间复杂度从O(N2M)O(N^2M)O(N2M)降为O(NM2)O(NM^2)O(NM2)比如说对于字符串abc,一共可以且4刀,如果:(lp=left part,rp=right part)lp是回文且 rp[::-1] in wordsrp是回文且 lp[::-1] in words比如说,words = ['abc', 'cb'],lp=a是回文且rp=‘bc’,逆在words对于长度为L的word,一共可以切L+1刀注意对于空集的判定只能有一

2021-07-14 22:27:07 196

原创 【科学刷题】模式匹配专题

44. 通配符匹配class Solution: def isMatch(self, s: str, p: str) -> bool: m, n = len(s), len(p) dp = [[False] * (n + 1) for _ in range(m + 1)] # 忘了 dp[0][0] = True for j in range(1, n + 1): # * 能和 空串 匹配

2021-06-13 12:39:59 244

原创 【科学刷题】数据结构的综合应用

716. 最大栈双端队列 + 平衡树LRU,LFU,数据流中位数研究一下字节面试题381. O(1) 时间插入、删除和获取随机元素 - 允许重复这题还有配套的

2021-05-29 14:20:35 242

原创 【科学刷题】完全吃透所有树相关的算法题

1 二叉树2 完全二叉树3 二叉搜索树

2021-05-29 10:56:08 912

原创 【科学刷题】最长公共子序列/子串(LCS)

674. 最长连续递增序列class Solution: def findLengthOfLCIS(self, nums: List[int]) -> int: n = len(nums) dp = [1] * n for i in range(1, n): if nums[i] > nums[i - 1]: dp[i] = dp[i - 1] + 1 return.

2021-05-23 16:10:36 295

原创 【科学刷题】最长递增子序列:从一维到三维

354. 俄罗斯套娃信封问题

2021-05-21 09:54:32 236

原创 【科学刷题】3种方法花式求解 X 的平方根

文章目录1. 梯度下降2. 牛顿迭代3. 二分面试官:好,那我们来做个算法题吧(悲剧开始了),求x开方面试官:你有什么思路我:二分面试官:除了二分呢我:牛顿法(给自己挖坑了,应该答牛顿迭代法)面试官:写下牛顿法的公式我:不会面试官:牛顿法能用的条件我:有二阶导面试官:用梯度下降求这题。。。害,当时脑子进水了,掰扯了很久,最后还没写出来(怕是凉了T_T)1. 梯度下降设C=9C=9C=9,求C\sqrt{C}C​,那么等同于求y=x2−Cy=x^2-Cy=x2−C的零点要么求函

2021-05-17 22:43:20 573

原创 【科学刷题】取值小于n的n个数专题

※ 41. 缺失的第一个正数41. 缺失的第一个正数缺失的第一个正数这题的hash法我看懂了,就是没时间写注释class Solution: def firstMissingPositive(self, nums: List[int]) -> int: n = len(nums) for i in range(n): if nums[i] <= 0: nums[i] = n + 1

2021-05-11 09:04:08 306

原创 【科学刷题】最长递增子序列(LIS):从1维到3维

300. 最长递增子序列300. 最长递增子序列n2n^2n2class Solution: def lengthOfLIS(self, nums: List[int]) -> int: n = len(nums) dp = [1] * n ans = 0 for i in range(1, n): for j in range(i): if nums[i] &gt

2021-05-11 09:00:31 323 1

原创 【科学刷题】并查集

582. 杀掉进程582. 杀掉进程并查集考虑一种极端情况,数的结构类似链表,那么时间复杂度直接飙到N2N^2N2,就TLEhashmap并查集的话,如果某个结点不存在,如x not in parent,可以直接让parent[x]=x,然后返回x,这样连初始化都免了class Solution: def killProcess(self, pid: List[int], ppid: List[int], kill: int) -> List[int]: resu

2021-05-11 08:23:07 213

原创 【科学刷题】动态规划

403. 青蛙过河403. 青蛙过河时间复杂度: O(N2)O(N^2)O(N2)class Solution: def canCross(self, stones: List[int]) -> bool: mapper={} for stone in stones: mapper[stone]=set() mapper[0].add(0) for stone in stones:

2021-05-11 08:22:41 583

原创 【科学刷题】滑动窗口

3. 无重复字符的最长子串滑动窗口class Solution {public: int lengthOfLongestSubstring(string s) { set<char> window; // ans 应该初始化为0而不是负数,以适应s为空的情况 int l = 0, ans = 0; for (int r = 0; r < s.size(); ++r) { char c =

2021-05-11 08:22:03 253

原创 【科学刷题】归并 / 归并排序 的各种应用

315. 计算右侧小于当前元素的个数315. 计算右侧小于当前元素的个数其实和逆序对差不多,就是改为对index排序(要记录下标)和逆序对一样,在归并的统计区做数据统计,其他基本不变class Solution: def countSmaller(self, nums: List[int]) -> List[int]: counts = [0] * len(nums) index = [i for i in range(len(nums))]

2021-05-11 08:21:41 524

原创 【科学刷题】DFS与BFS

582. 杀掉进程582. 杀掉进程并查集考虑一种极端情况,数的结构类似链表,那么时间复杂度直接飙到N2N^2N2,就TLEhashmap并查集的话,如果某个结点不存在,如x not in parent,可以直接让parent[x]=x,然后返回x,这样连初始化都免了class Solution: def killProcess(self, pid: List[int], ppid: List[int], kill: int) -> List[int]: resu

2021-05-11 08:21:32 272

原创 【科学刷题】完全吃透所有链表题

文章目录1. 链表的各种花式反转1.1 完全反转1.2 部分反转1.3 K个一组反转2. 链表找环 + 链表相交2.1 普通链表找环 + 找环入口2.2 普通两个链表的交点82. 删除排序链表中的重复元素 II234. 回文链表23. 合并K个升序链表1. 链表的各种花式反转1.1 完全反转剑指 Offer 24. 反转链表迭代class Solution: def reverseList(self, head: ListNode) -> ListNode: p

2021-05-10 10:16:18 392

原创 【科学刷题】跳台阶:难度逐渐变态

70. 爬楼梯70. 爬楼梯class Solution: def climbStairs(self, n: int) -> int: dp=[0]*(n+1) dp[0]=dp[1]=1 for i in range(2, n+1): dp[i]=dp[i-1]+dp[i-2] return dp[n]TODO: 常数时间复杂度变态跳台阶:剑指Offer(九):变态跳台阶f(n)=2f(n−

2021-05-10 10:15:39 280

原创 【科学刷题】回文题

7. 整数反转7. 整数反转class Solution {public: int reverse(int x) { int ret=0; while(x!=0){ int pop=x%10; x/=10; if(ret>INT_MAX/10 ||(ret==INT_MAX && pop>7)) return 0; if(ret<IN

2021-05-10 10:15:28 280

原创 【科学刷题】接雨水:从1维到2维

42. 接雨水42. 接雨水DPclass Solution: def trap(self, height: List[int]) -> int: sum = 0 n = len(height) max_left = [0] * n max_right = [0] * n for i in range(1, n - 1): max_left[i] = max(max_left[i

2021-05-10 10:14:48 309

原创 【科学刷题】完全吃透所有栈相关的算法题

20. 有效的括号20. 有效的括号class Solution: def isValid(self, s: str) -> bool: stack=collections.deque() mapper={ ')':'(', '}':'{', ']':'[', } for c in s: if c in mapper:

2021-05-10 10:14:37 471

空空如也

空空如也

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

TA关注的人

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