Tag: algorithm

平方负指数的权力

我不确定平方的权力是否负指数。 我实现了以下只适用于正数的代码。 #include <stdio.h> int powe(int x, int exp) { if (x == 0) return 1; if (x == 1) return x; if (x&1) return powe(x*x, exp/2); else return x*powe(x*x, (exp-1)/2); } 查看https://en.wikipedia.org/wiki/Exponentiation_by_squaring没有帮助,因为下面的代码似乎是错误的。 Function exp-by-squaring(x, n ) if n < 0 then return exp-by-squaring(1 / x, – n ); else if n = 0 then […]

生成所有设置了k位的长度为n的二进制string

find包含k位集的长度为n的所有二进制string的最佳algorithm是什么? 例如,如果n = 4,k = 3,则有… 0111 1011 1101 1110 我需要一个好的方法来生成这些给定的任何n和任何k,所以我宁愿用string来完成。

JavaScript – 从当前date开始获取一周中的第一天

我需要最快的方法来获得一周的第一天。 例如,今天是11月11日星期四,我需要把这个date转换成11月8日(星期一)。 我需要MongoDB地图function最快的方法,有什么想法?

你从这个破碎的随机洗牌中得到什么分配?

着名的Fisher-Yates shufflealgorithm可以用来随机排列长度为N的数组A: For k = 1 to N Pick a random integer j from k to N Swap A[k] and A[j] 我一再被告知一个常见的错误是: For k = 1 to N Pick a random integer j from 1 to N Swap A[k] and A[j] 也就是说,不是选取一个从k到N的随机整数,而是从1到N中选取一个随机整数。 如果你犯了这个错误会怎么样? 我知道由此产生的排列不是均匀分布的,但是我不知道什么样的结果会是什么保证。 特别是,有没有人有一个概率分布在元素的最终位置的expression?

编写一个返回给定string中最长回文的函数

例如string“abaccddccefe”中的“ccddcc” 我想到了一个解决scheme,但它运行在O(n ^ 2)时间 Algo 1: 步骤:它是一个蛮力方法 有2个循环 对于i = 1到i小于array.length -1 对于j = i + 1到j小于array.length 这样你可以得到数组中每个可能组合的子串 有一个回文函数,检查一个string是回文 所以对于每个子string(i,j)调用这个函数,如果它是一个回文存储在一个stringvariables 如果发现下一个回文子string,并且大于当前string,则将其replace为当前string。 最后你的stringvariables将有答案 问题:1.这个algorithm运行在O(n ^ 2)时间。 Algo 2: 反转string并将其存储在不同的数组中 现在find两个数组之间最大的匹配子串 但是这也运行在O(n ^ 2)时间 你们能想到一个在更好的时间运行的algorithm吗? 如果可能的话O(n)时间

从垃圾邮件机器人隐藏电子邮件的有效方法

在我的主页上,我使用这种方法来隐藏垃圾邮件机器人的电子邮件: <a href="admin [at] example.com" rel="nofollow" onclick="this.href='mailto:' + 'admin' + '@' + 'example.com'">Contact me</a> 你怎么看待这件事? 它有效吗? 你知道或使用什么其他方法?

find一个不在40亿给定的整数

这是一个面试问题: 给定一个有40亿个整数的input文件,提供一个algorithm来生成一个不包含在文件中的整数。 假设你有1 GB的内存。 如果你只有10 MB的内存,跟进你会做什么。 我的分析: 文件的大小是4×10 9 ×4字节= 16 GB。 我们可以做外部sorting,因此我们知道整数的范围。 我的问题是什么是检测sorting的大整数集中丢失的整数的最佳方法? 我的理解(阅读所有答案后): 假设我们正在谈论32位整数。 有2 ^ 32 = 4 * 10 9不同的整数。 情况1:我们有1 GB = 1 * 10 9 * 8位= 80亿位内存。 解决scheme:如果我们使用一位代表一个不同的整数,就足够了。 我们不需要sorting。 执行: int radix = 8; byte[] bitfield = new byte[0xffffffff/radix]; void F() throws FileNotFoundException{ Scanner in = new Scanner(new […]

通过使用Pythonsorting文本文件

我有一个包含超过10万行的文本文件。 这样的行: 37024469;196672001;255.0000000000 37024469;196665001;396.0000000000 37024469;196664001;396.0000000000 37024469;196399002;85.0000000000 37024469;160507001;264.0000000000 37024469;160506001;264.0000000000 正如你所看到的,分隔符是“;”。 我想通过使用python根据第二个元素来sorting这个文本文件。 我不能使用拆分function。 因为它导致MemoryError。 我如何pipe理它?

Python – 一个字典慢find每个字符的频率?

我试图使用O(n)复杂度的algorithm在任何给定的文本中find每个符号的频率。 我的algorithm如下所示: s = len(text) P = 1.0/s freqs = {} for char in text: try: freqs[char]+=P except: freqs[char]=P 但是我怀疑这个字典方法是否足够快,因为它取决于字典方法的底层实现。 这是最快的方法吗? 更新:如果使用集合和整数,速度没有增加。 这是因为该algorithm已经具有O(n)复杂性,所以没有必要的加速可能。 例如,1MB文本的结果: without collections: real 0m0.695s with collections: real 0m0.625s

在列表中find单个号码

什么是最好的algorithmfind一个数字只发生一次在一个列表中,其中所有其他数字发生了两次。 所以,在整数列表(让我们把它作为一个数组)每个整数重复两次,除了一个。 要find那个,最好的algorithm是什么。