LeetCode
记录算法
油屋impl
job not finish
展开
-
JAVA MD5加密
点击转载 2020-11-04 10:07:18 · 71 阅读 · 0 评论 -
公约数相关算法
公约数定义 公约数,亦称“公因数”。它是一个能被若干个整数同时均整除的整数。如果一个整数同时是几个整数的约数,称这个整数为它们的“公约数”;公约数中最大的称为最大公约数。对任意的若干个正整数,1总是它们的公因数。 问题背景 求两个数的最大公约数 求多个数的最大公约数 求多个数的公约数 问题2、3其实质上也就是问题1的转化。 求2可以先求出其中两个数的最大公约数,将这个最大公约数同第三个数接着求其二者最大公约数,依次求解,即可得到多个数的最大公约数。 求3可以求出2,其最大公约数的公约数即是问题的解。 算原创 2020-05-19 16:47:38 · 661 阅读 · 0 评论 -
汉明距离
背景 汉明距离:两个整数之间的汉明距离是对应位置上数字不同的位数。 将这两个数进行XOR运算,得到的结果中1的个数就是最终结果。 布赖恩·克尼根算法 思路 是否可以像人类直观的计数比特为 1 的位数,跳过两个 1 之间的 0。例如:10001000。 上面例子中,遇到最右边的 1 后,如果可以跳过中间的 0,直接跳到下一个 1,效率会高很多。 这是布赖恩·克尼根位计数算法的基本思想。该算法使用特定比特位和算术运算移除等于 1 的最右比特位。 当我们在 number 和 number-1 上做 AND 位运算原创 2020-05-14 09:13:00 · 293 阅读 · 0 评论 -
众数有关算法
背景 给定一个长度为n的数组的时候,找出其中的主元素,即该元素在数组中出现的次数大于n/2的取整。题目中已经假定所给的数组一定含有元素,且主元素一定存在。 题目来源 解决方案 1. 排序 如果将数组 nums 中的所有元素按照单调递增或单调递减的顺序排序,那么下标为 nums.length/2的元素(下标从 0 开始)一定是众数。 排序可选择JAVA自带排序算法。 2.随机化 思路 因为超过n/2的数组下标被众数占据了,这样我们随机挑选一个下标对应的元素并验证,有很大的概率能找到众数。 代码 在这里插入代码原创 2020-05-13 12:16:47 · 181 阅读 · 0 评论 -
素数有关算法
素数定义 素数也叫质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 如何判断一个数是否为素数 (1)6X算法 证明:令x≥1,将大于等于5的自然数表示如下: 0, 1,2, 3,4, 5,6x,6x+1,6x+2,6x+3,6x+4,6x+5,6(x+1),6(x+1)+1 ······ 可以看到,当数字大于5时,任意自然数num num%6=1或者 num%6=5 num才有可能为素数,其他情况一定不是素数。 算法代码 //判断是否为素数 public boolean原创 2020-05-09 23:05:49 · 164 阅读 · 0 评论