算法
文章平均质量分 65
风吹千里
潜心一技、做到极致。
展开
-
常见的两种洗牌算法
该算法的基本思想和 Fisher 类似,每次从未处理的数据中随机取出一个数字,然后把该数字放在数组的尾部,即数组尾部存放的是已经处理过的数字。每次进行洗牌算法后,就把得到的打乱结果对应的频数加一,重复进行 100 万次,如果每种结果出现的总次数差不多,那就说明每种结果出现的概率应该是相等的。这其实就是利用了蒙特卡罗方法:当打的点足够多的时候,点的数量就可以近似代表图形的面积。类似的,我们可以对同一个数组进行一百万次洗牌,统计各种结果出现的次数,把频率作为概率,可以很容易看出洗牌算法是否正确。原创 2024-08-08 21:46:08 · 850 阅读 · 0 评论 -
链表中环的入口节点
链表中环的入口节点给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n≤10000, 1原创 2024-06-22 16:25:50 · 466 阅读 · 0 评论 -
整数压缩算法之VarInt编码
varint是一种对正整数进行可变长字节编码的方法,大多数情况下可起到数据压缩的作用。通常,一个int型整数占4个字节,若该整数的数值小于256,显然一个字节的空间就能存储,浪费了3个字节的空间,而varint就起到了压缩数据的作用。Varint编码通常使用7位表示一个字节,其中最高位(第8位)用作标记位,表示是否还有更多的字节用于表示该整数。如果最高位为0,则表示该字节是该整数的最后一个字节;在实际场景中小数字的使用率远远多于大数字,因此通过Varint编码对于大部分场景都可以起到很好的压缩效果。原创 2024-04-03 10:05:18 · 289 阅读 · 0 评论 -
求解两个字符串的最长公共子序列
转自https://www.cnblogs.com/hapjin/p/5572483.html今天项目遇到一个问题我觉得这个博客打开我的思路,特在此转一下博客,后面有时间研究一下。一,问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB则这两个字符串的最长公共子序列长度为4,最长公共...转载 2018-11-15 20:55:02 · 2136 阅读 · 1 评论