
算法
虫子不懒
这个作者很懒,什么都没留下…
展开
-
素数相关
判断素数一个数只能被1和本身整除,叫素数,2是最小的素数(质数)。法1-简单法时间O(n)bool isPrime(int num){ if(num <= 3) { return num > 1; } for(int i = 2; i < num; ++i) { if(num % i == 0) return false; } return true;}法2-平方根法时间O(sq原创 2020-07-12 23:35:07 · 235 阅读 · 0 评论 -
动态规划5-最长公共子序列和子串问题LCS
大佬任意门1大佬任意门2-更详细一点问题描述给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。X = BDCABA Y = ABCBDAB则这两个字符串的最长公共子序列长度为4,LCS是:BCBA解题思路设xi是X的元素,yj是Y的元素,X = (x1, x2, …, xm),Y = (y1, y2, …, yn),最长公共子序列为...原创 2020-03-05 14:37:24 · 255 阅读 · 0 评论 -
动态规划4-01背包问题
问题描述有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?返回最大价值和选择的物品重量(索引也是可以的)。测试数据重量数组w[2,3,4,5]价值数组v[3,4,5,6]背包容量 8返回 最大价值10 物品[3, 5] 或返回索引[1, 3]思路设dp[i][j]为前i个物品中背包容量为j时的最大价值,则状态方程dp[i][j...原创 2020-03-04 21:43:27 · 663 阅读 · 0 评论 -
动态规划3-子集和问题
DP经典问题子集和问题动态规划适用于有以下特征的问题场景:最优子结构重叠子问题子集和问题问题描述1给定一个正整数集合,从中找到子集和最大的值,要求子集的元素必须是不相邻元素(一旦元素被选中,则其左右的元素都不能被选),返回子集和。e.g.arr = {4, 1, 1, 9, 1}返回 13思路设dp[i]为前i个元素所能得到的最大值,则dp[i]=max{dp...原创 2020-02-29 23:10:26 · 2858 阅读 · 0 评论 -
动态规划2-钢条切割和剪绳子
DP经典问题钢条切割剪绳子-钢条切割变形钢条切割优秀题解传送门问题:假设我们知道长度为l的钢条价格为pi(i=1,2,3,……),钢条长度为整数,给出价格表(任意长度的价格都有)。长度i123456789价格pi1589101717202430给我们一段长度为n的钢条,怎样切割使得收益rn最大?求最大收益。解法1假...原创 2020-02-24 21:22:08 · 226 阅读 · 0 评论 -
动态规划1-斐波那契入动规
动态规划参考题解传送门1参考题解传送门2分治:将问题划分成互不相交的子问题,然后递归地求解子问题,最后将子问题组合起来得到原问题解。(eg.归并排序)动态规划:和分治类似,但应用于子问题重叠的情况,即不同的子问题具有公共的子问题(在这种情况下使用分治会重复执行很多不必要的工作)。所以动态规划只对每个子问题求一次解,将结果存在一个表格中,需要使用时直接查表即可。(DP常常使用一维或二维表格存...原创 2020-02-24 21:12:29 · 154 阅读 · 0 评论 -
bloomFilter和哈希函数murmur3
Murmur哈希算法是一种非加密hash算法,适用于哈希查找。优点是时间和空间消耗较少,可检索一个元素是否在集合中缺点是误识别率和删除困难原理 元素被加入集合时,选择k个哈希函数,对元素进行散列,映射到一个位数组中的k个点,并将其置为1。 查找时,只判断这个元素经过哈希的k个点是否为1,如果等于1,不一定包含该元素,不等于1,一定不包含元素。只会产生两个结果:可能存在或者一定不存...原创 2019-06-20 17:12:28 · 881 阅读 · 0 评论