算法
文章平均质量分 76
四库全书的酷
格物致知,所有未知都可变成已知!
展开
-
约瑟夫环 数学解法
【约瑟夫环】这 n 个数字排成一个圆圈,从数字 0 开始,每次从这个圆圈里删除第 m 个数字。求出这个圆圈里剩下的最后一个数字。例如,0,1,2,3,4 这 5 个数字组成一个圆圈,从数字 0 开始每次删除第 3 个数字,则删除的前 4 个数字依次是2,0,4,1,因此最后剩下的数字是 3。解决约瑟夫环问题,我们采用倒推,我们倒推出:最后剩下的这个数字,在最开始的数组中的位置。剩下最后一个数字(简称“它”)的时候,总个数为 ,它的下标。那么它在上一轮也是安全的,总个数为 ,它的下标 ;那么它在上上轮也原创 2022-06-28 13:21:43 · 1282 阅读 · 1 评论 -
bit=1[一比特位]统计算法 :Brian Kernighan算法
由于一个计算机是二进制存储数据,比如:对于2的幂次方有特点就是二进制中只有一个位为1;即对于只有一个1的二进制有一个特点这是一个判断2的幂次方的快速方法:;同时运算式: 可以把n的二进制的最后一个为1 的位置0;利用 Brian Kernighan 算法,可以在一定程度上进一步提升计算速度。Brian Kernighan 算法的原理是:对于给定的 n,计算从 0 到 n 的每个整数的「一比特数」的时间都不会超过 O(logn),因此总时间复杂度为 O(nlogn)。...原创 2022-06-06 15:30:09 · 520 阅读 · 0 评论 -
辗转相除法 - 求解最小公倍数和最大公约数
文章目录辗转相除法最大公约数和最小公倍数代码辗转相除法欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。其计算原理依赖于下面的定理:定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(Greatest Common Divisor)缩写为GCD。gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0原创 2022-05-22 00:10:54 · 1023 阅读 · 0 评论 -
华为面试题:完全数定义与欧拉公式求解完全数
文章目录题目完全数定义与计算(欧拉)代码题目完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。输入n,请输出n以内(含n)完全数的个数。数据范围: 1≤n≤5×10^5输入描述:输入一个数字n输出描述:输出不超过n的完全数的个数示例1输入:1000输出:3完全数原创 2022-05-20 16:54:34 · 416 阅读 · 0 评论 -
KMP算法原理分析
文章目录前言代码分析next数组的产生与意义next数组作用过程步步分析next数组到底是什么?前言解决问题是字符串单模匹配。其他算法可以参考博文链接文本串S: dfgabcabcda模式串T: abcabcn为S的长度,即n = 11;m为T的长度,即m = 6;i为匹配时 S的下标;j为匹配时T的下标。对比:在BF朴素算法的中每次匹配,如果匹配失败,i会从匹配开始前的i往后移动一位。j则会直接变为0;而在KMP算法中,将会被优化为i不会后退,j每次为使得模式串T与文本原创 2022-04-25 22:56:24 · 571 阅读 · 0 评论 -
字符串单模匹配算法 RK / BM / Sunday / SHIFT-AND / KMP
文章目录单模匹配问题RK算法存在的问题简单实现BM算法坏字符方法好后缀方法坏字符+好后缀配合。Sunday算法SHIFT-AND算法(位运算)KMP算法单模匹配问题单模匹配问题:一个字符串和另一个字符串之间的包含关系确认的问题,假设求解字符串A中是否包含字符串B。那么字符串A就是文本串,字符串B就是模式串。也就是求解文本串中是否含有模式串的问题。前置条件:文本串的长度为n;模式串的长度为m;n>=m>=0;RK算法Rabin-Karp算法:就是利用hash思想,我们通过哈原创 2022-04-24 23:37:19 · 471 阅读 · 0 评论 -
manacher算法求解最长回文串 && 回文串的相关算法
文章目录回文串问题是否为 回文串 / 回文数?回文子串的问题最长回文子串的问题manacher算法回文串问题回文串就简单理解为中心对称的字符串。这个概念理解起来还是蛮简单的。关于回文串的题目,相对而言最简单的无疑就是求解是否为回文串!是否为 回文串 / 回文数?这时候就有根据数据类型去做判断。字符串中都是数字的。我们叫做回文数。-判断是否为回文数?题目链接可以整合以下思路:1、 转化为字符串去处理?可行!见下。但是会用到大量的额外空间。2、数字翻转?有可能超过INT_MAX。如果l原创 2022-04-23 19:24:49 · 890 阅读 · 0 评论