Tag: algorithm

我应该使用什么Java集合?

在这个问题如何有效地select在C + + 11标准库容器? 是selectC ++集合时使用的方便的stream程图。 我认为这对于那些不确定应该使用哪个集合的人来说是一个有用的资源,所以我试图find一个类似于Java的stream程图,并且无法做到这一点。 什么资源和“备忘单”可用于帮助人们select正确的集合在Java编程时使用? 人们如何知道他们应该使用什么List,Set和Map实现?

用于PHP函数的Big-O列表

现在使用PHP一段时间后,我注意到并不是所有的PHP函数的function都像预期的那样快。 考虑以下两种可能的函数实现,使用caching的素数arrays来查找数字是否为素数。 //very slow for large $prime_array $prime_array = array( 2, 3, 5, 7, 11, 13, …. 104729, … ); $result_array = array(); foreach( $prime_array => $number ) { $result_array[$number] = in_array( $number, $large_prime_array ); } //speed is much less dependent on size of $prime_array, and runs much faster. $prime_array => array( 2 => NULL, […]

如何根据数字检测信用卡types?

我试图找出如何检测纯粹根据其数量的信用卡types。 有谁知道一个确定的,可靠的方式来find这个?

Java中的稀疏matrix/数组

我正在开发一个用Java编写的项目,这个项目要求我构build一个非常大的二维稀疏数组。 非常稀疏,如果这有所作为。 无论如何:这个应用程序的最关键的方面是时间效率(假设内存负载,尽pipe没有那么大的限制,使我可以使用标准的二维arrays – 关键的范围是在两个数十亿)。 在arrays中的kajillion单元格中,将会有数十万个包含对象的单元格。 我需要能够很快修改单元格内容。 无论如何:有没有人知道这个目的特别好的图书馆? 它必须是伯克利,LGPL或类似的许可证(没有GPL,因为产品不能完全开源)。 或者,如果只有一个非常简单的方法来制作一个自制稀疏数组对象,那也可以。 我正在考虑MTJ ,但没有听到任何意见的质量。

检查数字是否是最好的algorithm最好的algorithm是什么?

可能重复: 素数的高效存储 只是我正在寻找的一个例子:我可以表示每一个奇数,例如对于给定的数字范围(1,10),从3开始: 1110 下面的字典可以挤得更正确吗? 我可以用一些工作来重复5的倍数,但是以1,3,7或9结尾的数字必须在这个位数中。 希望这会澄清我想要的。 我正在寻找最好的algorithm,检查一个数是否是质数,即布尔函数: bool isprime(number); 我想知道实现此function的最佳algorithm。 当然,会有我可以查询的数据结构。 我定义了最好的algorithm ,作为在范围(1,N)内产生一个具有最低内存消耗的数据结构的algorithm,其中N是一个常数。

在一个螺旋循环

一个朋友需要一个algorithm,让他循环一个NxMmatrix的元素(N和M是奇数)。 我提出了一个解决scheme,但我想看看我的同事是否可以提出一个更好的解决scheme。 我发布我的解决scheme作为这个问题的答案。 输出示例: 对于3x3matrix,输出应该是: (1,0)(1,0)(1,1)(0,1)(-1,1)(-1,0)(-1,-1)(0,-1)(1,-1 ) 此外,该algorithm应该支持非平方matrix,例如对于一个5x3matrix,输出应该是: (1,0)(1,0)(1,1)(0,1)(-1,1)(-1,0)(-1,-1)(0,-1)(1,-1 )(2,-1)(2,0)(2,1)(-2,1)(-2,0)(-2,-1)

我如何计算圆周上的一个点?

以下function如何以各种语言实现? 计算圆周上的(x,y)点,给定的input值为: 半径 angular度 起源(可选参数,如果语言支持)

图algorithm查找两个任意顶点之间的所有连接

我试图确定完成下面描述的任务的最佳时间有效的algorithm。 我有一套logging。 对于这组logging,我有连接数据,它表明来自这组的logging对如何相互连接。 这基本上代表一个无向图,logging是顶点,连接数据是边。 集合中的所有logging都具有连接信息(即,不存在孤立logging;集合中的每个logging连接到集合中的一个或多个其他logging)。 我想从集合中select任何两条logging,并能够显示所选logging之间的所有简单path。 “简单path”是指path中没有重复logging的path(即仅有限path)。 注意:两个select的logging总是不同的(即开始和结束的顶点不会是相同的;没有循环)。 例如: 如果我有以下logging: A,B,C,D,E 以下代表连接: (A,B),(A,C),(B,A),(B,d),(B,E),(B,F),(C,A),(C,E), (C,F),(d,B),(E,C),(E,F),(F,B),(F,C),(F,E) [其中(A,B)表示loggingA连接到loggingB] 如果我selectB作为我的起始logging,E作为我的结束logging,我想通过连接loggingB到loggingE的logging连接find所有简单path。 连接B到E的所有path: B->电子 B-> F->电子 B-> F-> C->电子 B-> A-> C->电子 B-> A-> C-> F->电子 这是一个例子,在实践中,我可能有成百上千的logging。

从一个数组中找出一对元素,其总和等于一个给定的数字

给定n个整数的数组并给定一个数X,找出所有唯一的元素对(a,b),其总和等于X. 以下是我的解决scheme,它是O(nLog(n)+ n),但是我不确定它是否最优。 int main(void) { int arr [10] = {1,2,3,4,5,6,7,8,9,0}; findpair(arr, 10, 7); } void findpair(int arr[], int len, int sum) { std::sort(arr, arr+len); int i = 0; int j = len -1; while( i < j){ while((arr[i] + arr[j]) <= sum && i < j) { if((arr[i] + arr[j]) == sum) cout << […]

Google“你的意思是?”algorithm是如何工作的?

我一直在为一个投资组合pipe理工具开发一个内部网站。 有很多的文本数据,公司名称等我一直对一些search引擎能够很快响应查询与“你的意思是:xxxx”印象深刻。 我需要能够智能地采取用户查询,不仅回应原始的search结果,而且与“你的意思是? 有很可能的备选答案等时的回应 [我正在开发ASP.NET (VB – 不要抱着它!)] 更新:好的,我怎样才能模仿这个没有数百万的“无偿用户”? 为每个“已知”或“正确”的字词生成拼写错误并执行查找? 其他一些更优雅的方法?