算法
瑾修
人生苦短,何不一试?
展开
-
求两个vector的并集,交集,差集
void update(vector<int> &oldVec, vector<int> &newVec) { sort(oldVec.begin(), oldVec.end()); sort(newVec.begin(), newVec.end()); if (oldVec == newVec) return; vector<int> bingji, jiaoji, VecDel, VecAdd; // 并集 . 交集,原创 2021-04-01 22:45:21 · 1838 阅读 · 0 评论 -
二分法(leetcode笔记)
题目示例一74. 搜索二维矩阵代码bool searchMatrix(vector<vector<int>>& matrix, int target) { int m = matrix.size(), n = matrix[0].size(); int l = 0, r = m*n-1; if( matrix[0][0] == target || target == matrix[m-1][n-1] ) return true; if(原创 2021-03-18 12:41:43 · 182 阅读 · 0 评论 -
优先队列(leetcode笔记)
1792. 最大平均通过率有的题似乎只能用优先队列做,其他方法都会超时。比如上面这道。因为之前优先队列做得少,吃了大亏。数据类型包含两个数的,优先使用pair,而非vector。pairclass Solution {public: double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) { auto cmp = [](const pair<in原创 2021-03-15 13:02:04 · 248 阅读 · 0 评论 -
匈牙利算法(样例完整代码结合具体场景)
适用场景两个集合的匹配,求最大匹配度。比如田忌赛马,已知我方上等马大于对方中等马、下等马,我方中等马大于对方下等马,求我方最多胜场数。假设场景有5位男嘉宾,分别是1、2、3、4、5;5位女嘉宾,分别是6、7、8、9、10。然后男女双方拟定选择自己的愿意组队的异性嘉宾。结果是:1号男 可以选择7,9,10其中一位;2号对应7,9,10;3号对应6,9,10;4号对应7,8,10;5号对应7;问最多可以组成几对?写出一种组合方式。算法思想先选先得,有备则让。意思大概是:1号嘉宾,有7原创 2021-02-06 19:41:53 · 585 阅读 · 0 评论 -
分布式唯一ID算法(Twitter Snowflake算法) c++实现
分布式唯一ID算法(Twitter Snowflake算法) c++实现原创 2021-01-29 00:09:44 · 237 阅读 · 0 评论 -
洗牌算法拓展(从n个数中随机m个数)
一般洗牌算法达到的效果就是打乱序列,可以理解为从n个数中随机m个数。当n==m的时候,就是全打乱,m<n的时候,有两种做法。①全打乱,然后取前m项。②每次从n中取出一个数,然后从n中删除这个数,重复m次。全打乱(n等于m)1、random_shuffle 一般洗牌就是全打乱,这个时候可以直接用stl的 random_shuffle 函数。源码如下:template <class RandomAccessIterator> ...原创 2020-11-13 00:44:49 · 685 阅读 · 0 评论