
每天一个基础算法
文章平均质量分 61
我家大宝最可爱
这个作者很懒,什么都没留下…
展开
-
bitmap算法与布隆过滤器
考虑这样一个真实的情景,现在有10亿个数字的集合S,给定一个数字v,判断v是否在集合中。第一个想法就是把这10亿个数字存储到数组中,然后咱们遍历这个数组就可以了。那么这个数组占用多大的空间呢,假设每个数字都是4个字节为的int类型,4*10^10Byte = 40000000000Byte = 39062500KB = 38147M = 37.25G,整个64G的内存条倒是可以直接把这个数组加载进...原创 2020-03-29 01:12:20 · 227 阅读 · 0 评论 -
动态规划:最大递增子序列和最长公共子序列
加入有一个序列 a = [4,5,1,2,7,6,1,9] # 定义一个数组dp,表示递增子序列的个数 dp = [1,1,1,1,1,1,1,1] # 初始化都为1 计算一下相应的递增子序列个数 dp = [1,2,1,2,3,3,1,4] 如果我新加了一个数x,如何计算x对应的递增子序列个数呢?假设x的位置为i a = [4,5,1,2,7,6,1,9,x] dp = [1,2,1,2,......原创 2018-09-27 16:42:29 · 325 阅读 · 0 评论 -
leetcode:最小编辑距离
一个字符串A通过删除,插入,替换三种方式变换成另一个字符串B所需要的最少操作步骤即为编辑距离,如 A = abcdefg B = aacdef 将g删除,b替换成a,这两个步骤可以将A转换成B。所以编辑距离为2。 这个其实是一个典型的动态规划问题 dp[i][j]={0i=0,j=0ii>0,j=0jj>0,i=0min(dp[i−1][j]+1,dp...原创 2018-10-09 20:04:38 · 1036 阅读 · 0 评论 -
动态规划
【动态规划】01背包问题原创 2020-03-27 18:26:04 · 168 阅读 · 0 评论 -
二分查找边界问题(标题党)
首先是二分查找的定义,这个是直接从百度上找到的 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 1.必须采用顺序存储结构。 2...原创 2020-03-24 17:39:09 · 537 阅读 · 0 评论 -
字符串匹配之KMP算法
先不说算法不算法的的,怎么知道一个字符串(模式串P)在是否在另一个字符串(字符串T)中呢? 序号 1 2 3 4 5 6 7 8 9 10 字符串T a b c a b o k a n p 模式串P a b c a b d 正常的人就会想,我一个一个字符比对过去不久行了吗,总结成思想就是 模式串P和字符串T一位一位比,相同就往后比较,不同就移动一下模式串,继续比 ...原创 2020-03-23 15:03:30 · 123 阅读 · 0 评论 -
hash函数和hash表
hash表 首先说hash函数,hash其实就是一个映射函数y=Hash(x)y=Hash(x)y=Hash(x),具体做的事情就是把一个值y(数字,字符串等)映射成一个数组hash_arr的下标index(数字),然后把这个值存到这个下标对应的位置。HashHashHash函数需要自己定义,hash_arr也需要自己额外定义(大小自己看着办) i = Hash(y) //值y通过hash函数映射...原创 2020-03-17 18:17:44 · 550 阅读 · 0 评论