![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
文章平均质量分 93
算法题刷刷
原创文章公众号:算法提刷刷、潮汐朝夕
我是潮汐,北京人,上海交大电子信息专业本硕。2018年硕士毕业后一直做风控AI算法工程师,深耕AI技术,金融科技和风控服务。在大型社交平台做过内容合规和反作弊,目前主要做大风控业务下的系统研发和建模。爱好骑行,围棋,钢笔,算法竞赛。对计算机、人工智能、数学、算法感兴趣的同学,欢迎关注我,阅读更多原创文章。
展开
-
冒泡排序平均需要跑多少趟:拉马努金Q函数初探
本文我们讨论了排序算法的分析中的一个问题:冒泡排序平均需要跑多少趟。首先引入了排列中的一些概念定义,包括逆序、逆序表,然后基于冒泡排序的算法流程,发现冒泡排序扫描的趟数就是逆序表中的最大值。再结合排列的逆序表自身的性质,以及通过累积分布函数求数学期望的性质,最终我们将问题归结到了∑k0Nk!kN−kN!k^{N-k}}{N!k0∑NN!k!kN−k的渐近估阶。原创 2024-02-15 11:33:39 · 930 阅读 · 0 评论 -
在归并排序中对小数组采用插入排序
摘要: 使递归的叶子变粗【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】在文章中,我们了解了分治算法的设计和分析方法,并且得出了归并排序算法的最坏情况运行时间为Θnlogn。在文章中,我们了解了算法分析的方法论,并且以插入排序为例,得到了插入排序最坏情况运行时间为Θn2。虽然开起来好像归并排序比插入排序的运行时间要好,但插入排序中的常量因子可能使得它在 n 较小时,在许多机器上实际运行得更快。因此归并排序中,当子问题规模足够小时,采用插入排序。原创 2024-02-10 13:54:50 · 752 阅读 · 0 评论 -
算法导论第四版
算法导论第四版介绍原创 2023-02-02 23:21:37 · 1606 阅读 · 0 评论 -
前缀和与差分
前缀和与差分的算法原理与代码模板原创 2022-08-09 22:28:50 · 264 阅读 · 0 评论 -
减治法
partition 刚好在二分点二分1060. 有序数组中的缺失元素partition 不一定在二分点1545. 找出第 N 个二进制字符串中的第 K 位1533. 找到最大整数的索引topKtopK问题分类汇总4. 寻找两个正序数组的中位数215. 数组中的第K个最大元素973. 最接近原点的 K 个点剑指 Offer 40. 最小的k个数不一定每一层都有子问题可以舍弃分治42. 接雨水1562. 查找大小为 M 的最新分组$0 减治算法模板.原创 2020-11-06 16:38:24 · 424 阅读 · 0 评论 -
力扣-TopK问题,题目和解决方案列表
题目解决方案373. 查找和最小的K对数字堆+哈希表去重1439. 有序矩阵中的第 k 个最小数组和堆+哈希表去重 / 值域二分703. 数据流中的第K大元素堆 / multiset295. 数据流的中位数对顶堆 / multiset480. 滑动窗口中位数对顶堆 / multiset668. 乘法表中第k小的数值域二分786. 第 K 个最小的素数分数值域二分378. 有序矩阵中第K小的元素值域二分719. 找出第 k 小...原创 2020-10-27 22:56:55 · 757 阅读 · 2 评论 -
分类讨论
420. 强密码检验器672. 灯泡开关 Ⅱ335. 路径交叉420. 强密码检验器问题一个强密码应满足以下所有条件:由至少6个,至多20个字符组成。至少包含一个小写字母,一个大写字母,和一个数字。同一字符不能连续出现三次 (比如 “…aaa…” 是不允许的, 但是 “…aa…a…” 是可以的)。编写函数 strongPasswordChecker(s),s 代表输入字符串,如果 s 已经符合强密码条件,则返回0;否则返回要将 s 修改为满足强密码条件的字符串所需.原创 2020-10-19 00:05:16 · 343 阅读 · 0 评论 -
k叉哈夫曼树
哈夫曼树定义和构造算法, 2叉哈夫曼树回顾贪心-哈夫曼编码k叉哈夫曼树节点定义建树,同时也是贪心算法的构造性证明获取字符集的编码模拟k叉哈夫曼建树的贪心问题贪心-模拟哈夫曼建树过程的合并问题用建好的k叉哈夫曼树对同一字符集的数据编码和解码271. 字符串的编码与解码k叉哈夫曼树2叉哈夫曼树回顾:贪心-哈夫曼编码建树算法,同时也是贪心算法的构造性证明step1: 权值集合 w0,w1,...,wn−1{w_{0}, w_{1}, ..., w_{n-.原创 2020-10-18 00:14:38 · 632 阅读 · 0 评论 -
贪心-哈夫曼树,哈夫曼编码
哈夫曼树定义和构造算法2叉哈夫曼树节点定义建树,同时也是贪心算法的构造性证明获取字符集的编码用建好的2叉哈夫曼树对同一字符集的数据编码和解码271. 字符串的编码与解码$1 哈夫曼树平衡树插入删除效率高的前提各个节点的访问概率相等, 哈夫曼树在建树过程中考虑了节点的访问概率.哈夫曼树是 N 叉树,这里讨论的是二叉哈夫曼树。定义带权路径长度: WPL=∑i=0n−1wiliWPL = \sum_{i=0}^{n-1}w_{i}l_{i}WPL=∑i=0n−1wili.原创 2020-10-17 16:59:05 · 792 阅读 · 0 评论 -
负进制数与模负数
模负数求 a % p,以 a=±56236a = \pm 56236a=±56236,p=±371p = \pm 371p=±371 为例,a = 56236a = -56236p = 371c++: 215; python3: 215c++: -215; python3: 156p = -371c++: 215; python3: -156c++: -215; python3: -215十进制转k进制(k < 0)1017. 负二进制转换给出数字原创 2020-10-15 22:14:17 · 948 阅读 · 0 评论 -
进制转换
k > 0十进制整数转 k 进制十进制小数部分转 k 进制k 进制整数转十进制k 进制小数部分转十进制一个带小数十进制数与k进制互相转换,均可以把整数部分和小数部分分开进行转换,然后在连接在一起$1 十进制转k进制(k>0)十进制整数转k进制(k>0)进制转换的算法为短除法,这个算法就可以直接处理负整数的转换。如果是转换为二进制并取补码,则在结果上取反加一即可。算法:短除法以十进制转七进制(k=7)为例十进制数 x=4312,对应的七进制数为 15400短除原创 2020-10-15 00:56:31 · 1924 阅读 · 0 评论 -
贪心问题汇总
正确性证明(Ref: 《算法竞赛进阶指南》)微扰法范围缩放决策包容性反证法数学归纳法问题模型区间类区间不相交选择区间选点区间图染色区间覆盖峰谷类逆向思维加油站问题最小生成树单源最短路径哈夫曼树部分背包多指标规划删数,选数,拼数,改数子序列匹配分拆子串分拆子序列分拆重排问题与置换群田忌赛马情侣牵手…构造问题装箱问题调度问题拟阵维护贪心的算法或数据结构排序, 自定义排序栈堆平衡树双指针二分链表.原创 2020-10-08 17:34:10 · 285 阅读 · 0 评论 -
分治
文本首发在我的博客 : 分治主定理二分分治932. 漂亮数组169. 多数元素23. 合并K个升序链表53. 最大子序和参考线段树,树状数组四分分治1274. 矩形内船只的数目参考二维线段树,二维树状数组CDQ分治315. 计算右侧小于当前元素的个数参考离散化,权值线段树,权值树状数组线段树和树状数组题目汇总相似的场景概念减治topK: topK问题分类汇总二分:二分4. 寻找两个正序数组的中位数240. 搜索二维矩阵 II原创 2020-09-25 19:12:44 · 269 阅读 · 0 评论