本文总结下TopK相关算法,分为两个部分,一为讨论TopK问题的类型,二为相关的解题思路和C++代码实现。 TopK 问题一般为海量数据问题,可以分为两大类: 找最大/最小的 K 个数   这种问题一般分为两种类型,一为内存不够无法一次性加载,二为内存充足可以完全处理数据。 找重复次数最大的 K 个数   这种问题一般是涉及极其庞大的数据量,内存不可能一次性加载完成。必须采用 分治法。 阅读全文

2019年9月15日 0条评论 765点热度 1人点赞 liaosc 阅读全文

把 KMP 算法做个详细总结,写成博文。 主要分为四个部分: KMP 中的前缀后缀 构建 Next数组 KMP算法匹配过程 源码示例. 阅读全文

2019年9月11日 0条评论 716点热度 0人点赞 liaosc 阅读全文

讨论几个二分查找的变换问题,主要分为两类: 查找 第一个大于/大于等于 target 的数(左边界) 查找 最后一个小于/小于等于 target的数(右边界). 重点是注意临界条件,小心会死循环。本文假设数组为单调递增。 阅读全文

2019年8月10日 0条评论 664点热度 0人点赞 liaosc 阅读全文

总结一下缓存置换算法。 LFU(Least Frequently Used) 算法   最近最不常使用,缓存容量满的时候,置换使用频次最小的那个。 LRU(Least Recently Used) 算法   最近最少使用,缓存容量满的时候,置换最长时间没有使用的那个。 LRU-K 算法   LRU-k 有两个队列,一个队列是数据队列,一个队列是缓存队列,只有当数据队列数据的访问次数到达 K次,才将它放入缓存队列。 缓存队列按照 LRU 的方法置换数据。 阅…

2019年8月7日 0条评论 803点热度 0人点赞 liaosc 阅读全文

给定一个排列,如 "aazz" ,求按照字典排列方式的下一个字符,这里是:"azaz". 以 "aazz" 为例,字典序的算法步骤如下: 从右至左遍历,找出第一个左邻小于右邻的字符,记下位置 left; 本例中为 'a', left = 1; 再次从右至左遍历,找出第一个比 str[left] 大的字符,记下位置为 right; 本例中为 'z', right = 3; 交换 str[left] 和 str[right] 本例变成:'azaz'; 将 le…

2019年8月3日 0条评论 624点热度 0人点赞 liaosc 阅读全文

本文总结下位图法在数据去重方面的使用,全文分为三个部分: 一是位图法的定义 二是使用位图法判断数据是否存在 三是使用位图法找出不重复的数据 最后,附上C++的实现。 阅读全文

2019年7月19日 0条评论 764点热度 0人点赞 liaosc 阅读全文
12