- 博客(23)
- 收藏
- 关注
原创 brpc
1.官网:https://github.com/apache/incubator-brpc 2.安装(说明):https://github.com/apache/incubator-brpc/blob/master/docs/cn/getting_started.md 中文说明书 https://www.bookstack.cn/read/incubator-brpc/48b8de09ff568001.md#%E8%AF%95%E4%B8%80%E4%B8%8B! https://github.com/ap
2021-04-29 11:44:01
347
原创 待看+复现力扣
https://www.cnblogs.com/wangxf2019/p/12089149.html https://blog.youkuaiyun.com/hello_my_coder/article/details/105101655 https://blog.nowcoder.net/n/934754a0d0c848168597bc0fdf4e97ff https://juejin.im/post/5cab4ae46fb9a0688d2e24b4
2020-07-09 17:45:01
373
原创 C++学习锁
线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能与性能成反比。不过我们一般不使用递归锁(C++标准库提供了std::recursive_mutex),所以这里就不推荐了。 互斥锁(Mutex) 互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务队列。任何是一个线程都...
2020-07-07 21:56:47
2463
原创 k-means 聚类方法,转 4/15
k-means 聚类 聚类算法有很多种,K-Means 是聚类算法中的最常用的一种,算法最大的特点是简单,好理解,运算速度快,但是只能应用于连续型的数据,并且一定要在聚类前需要手工指定要分成几类。 K-Means 聚类算法的大致意思就是“物以类聚,人以群分”: 首先输入 k 的值,即我们指定希望通过聚类得到 k 个分组; 从数据集中随机选取 k 个数据点作为初始大佬(质心); 对集合中每一个小弟,...
2020-07-07 21:56:38
420
原创 设计和实现一个 LRU (最近最少使用) 缓存机制
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使用的数据值,从而为新的数据值留出空间。 你是否可以在 O(1) 时间复杂度内完成这两种操作? 实例: LRUCache
2020-07-07 21:56:16
1266
原创 7/2,刷题
最长回文子串, c采用中心往两边扫的方法 string longestPalindrome(string s) { int start = 0; int end = 0; int mlen = 0; for (auto i = 0;i<s.size();i++) { int len1 = getLen(s, i, i); int len2 = getLen(s, i, i+1); /.
2020-07-06 21:00:38
154
原创 重启,随机刷6/17
编辑距离 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。 例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。 若这两个字符串没有公共子序列,则返回 0。 示例 1: 输入:text1 = “abcde”, text2 .
2020-06-18 19:43:13
184
原创 动态规划 4/09
1 爬楼梯问题,爬一阶与两阶 /** * 爬楼梯问题,爬一阶与两阶 */ int getNFloor(int n) { std::vector<int> dp(101,0); dp[0] = 0; dp[1] = 1; dp[2] = 2; for (int i = 3; i <= n; i++) { dp[i] = dp[i-1] + dp[i-2];...
2020-04-10 10:52:42
146
原创 清明假期刷题,爬山 4/56
如上图 1 无重复字符子串,主要思想是 map 记录每个字符出现的长度,一定要要求是1次。出现一个记录一个 双指针滑动窗,如果第一次出现就加上,然后于 result 比较长度,长的就覆盖 result。当遇到相同元素的时候 就进入循环 begin 前移,在移动中,把原来的元素一一在 map 里--,直到当前元素在 map 中出现次数为1 string getLongestSubstr(stri...
2020-04-07 10:29:33
147
原创 随手写 4/2
4 字符串的切割 # include<sstream> vector<string> strSplit(string str, char delim) { std::stringstream ss(str; std::vector<string> res; string item; while(getline(ss, item, delim)) { ...
2020-04-03 10:29:03
144
原创 二叉搜索树 4/1
爬楼梯问题 /** * 爬楼梯,一次爬一节或者两节,N 节楼梯爬法 */ int getFloor(int n) { if (n==1) { return 1; } if(n ==2){ return 2; } int a[100]; a[0]=0; a[1]=1; a[2] = 2; for (int i=3;i<=n;i++){ a[i] = a[...
2020-04-02 09:07:42
138
原创 二分查找与二叉排序树 3/31号
1.二分查找 bool binary_search(std::vector<int> &nums, int key) { int begin = 0; int end = nums.size()-1; int mid = 0; while( begin <= end) { int mid = (end+begin)/2; if(key == nums[mi...
2020-04-01 10:32:31
229
原创 二叉树 3/29
1 N 叉树最大深度 /** * N叉树深度 */ int getDepth(TreeNode* root) { if(!root) { return 0; } priority_queue<int, std::vector<int>, less<int>> big_heap; for (auto i:root->children) {...
2020-03-30 09:34:21
144
原创 二叉树 3/28
今日刷题 二叉树非递归 前序中序后续 参考https://www.cnblogs.com/hengzhezou/p/11027190.html /** * 二叉树的前序非递归遍历,用栈来操作先pop 后访问右子树 */ typedef struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; T...
2020-03-29 16:40:29
154
原创 回溯与递归+分治 3/26
今日:刷题真痛苦 八皇后 求逆序数 树的字段和 上代码 /** * 八皇后问题,初始化,放,递归搜索 */ /** * 初始化一个 queen,mark 表示一个棋盘 N*N,location 表示一个queen的点状图,result 存储最终结果 * [".Q..", location是这种点阵表达的,一个状态.初始都是"." "...Q", "Q...", ...
2020-03-27 11:22:02
146
原创 回溯,递归 3/25
今日刷题记录 二叉树的从根到叶子节点路径,以及路径字面值的求和 递归思想,可以获取所有节点路径 std::vector<std::vector<int>> getTreeNum(Btree &tree) { std::vector<std::vector<int>> result; std::vector<int> item;...
2020-03-26 13:43:26
120
原创 回溯与递归 3/24
昨天学习递归跟回溯,感觉还是有些吃力 /** 求一个序列的所有子集,序列中元素无重复,可以使用二进制思想,也可以使用回溯跟递归,放该元素,与不放该元素 */ /*回溯思想/ std::vector<std::vector<int> > getSubSet(std::vector<int> &nums) { std::vector<std::v...
2020-03-25 10:02:50
142
原创 二叉堆
堆的调整时间复杂度 logn 大顶堆 std::priority_queue big_heap;(默认是大顶堆) std::priority_queue<int,std::vector,std::less> big_heap1;(大顶堆) std::priority_queue<int, std::vector,std::greater> small_heap;(小顶堆) ...
2020-03-24 11:56:50
133
原创 栈与队列 3/23日
栈来实现队列,双栈,data 先倒腾到 temp,temp 压入元素,再把 temp 倒腾到 data 栈里。实现队列 stack 常用函数 s.empty(); //如果栈为空则返回true, 否则返回false; s.size(); //返回栈中元素的个数 s.top(); //返回栈顶元素, 但不删除该元素 s.pop(); ...
2020-03-24 10:01:04
153
原创 链表系列 3/21日
今日刷题: K 个链表合并两种解法 链表排序 nlogn 时间复杂度 linkList Solution::mergeKlList(vector<linkList> &vec) { Node* head = new Node(0); Node* p = head; //方法一:用vector 实现每个节点存储,sort 排序 knlogkn v...
2020-03-23 09:47:53
129
原创 链表系列 3/20日
typedef struct Node { int data; struct Node *next; struct Node *random; Node(int d):data(d), next(nullptr),random(nullptr){} }Node, *linklist; /** * 把链表按照x划分,比 X 小的放前面,重点是用两个临时的头结点操作,注意morelist...
2020-03-21 10:48:12
107
原创 二叉树
二叉树系列,主要是递归思想 typedef struct BitTree { char data; struct BitTree *lchild,*rchild; BitTree(char d):data(d),lchild(nullptr),rchild(nullptr){} }BNode, *Btree; Btree *creat(Btree &tree) { char ch...
2020-03-20 14:23:51
112
原创 链表系列 3/19日
第一篇刷题思考 // An highlighted block typedef struct Node { int data; struct Node* next; Node(int d):data(d),next(nullptr){} }Node, *list; /* 头插法,生成的是倒序的 list */ list creatByHead(int* arr, int len) { ...
2020-03-20 13:39:51
123
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅