Questions tagged «algorithm»

算法是定义明确的问题解决方案的一系列明确定义的步骤。当您的问题与算法设计有关时,请使用此标签。

12
如何检查字符串是否完全由相同的子字符串组成?
我必须创建一个接受字符串的函数,并且该函数应该返回true或false基于输入是否包含重复的字符序列。给定字符串的长度始终大于,1并且字符序列必须至少重复一次。 "aa" // true(entirely contains two strings "a") "aaa" //true(entirely contains three string "a") "abcabcabc" //true(entirely containas three strings "abc") "aba" //false(At least there should be two same substrings and nothing more) "ababa" //false("ab" exists twice but "a" is extra so false) 我创建了以下功能: function check(str){ if(!(str.length && str.length - 1)) …

25
计算十亿个数字的中位数
如果您有十亿个数字和一百台计算机,那么找到这些数字的中位数的最佳方法是什么? 我有一个解决方案是: 在计算机之间平均分配集合。 对它们进行排序。 找到每组的中位数。 对中位数进行排序。 一次从最低到最高中值合并两套。 如果我们m1 < m2 < m3 ...先合并Set1,Set2然后在结果集中,我们可以丢弃所有低于Set12(合并)中位数的数字。因此,在任何时间点我们都有相等大小的集合。顺便说一下,这不能以并行方式完成。有任何想法吗?


7
我应该使用哪个Java集合?
在这个问题中,如何在C ++ 11中有效地选择标准库容器?是选择C ++集合时要使用的便捷流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,因此我试图找到类似的Java流程图,但未能做到。 哪些资源和“备忘单”可用来帮助人们选择使用Java进行编程时要使用的正确Collection?人们如何知道应该使用哪些List,Set和Map实现?

7
一种有效的短文本字符串压缩算法
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我正在寻找一种压缩小文本字符串的算法:50-1000个字节(即URL)。哪种算法对此最有效?

9
字符串的哈希函数
我正在使用C语言编写哈希表,并且正在测试字符串的哈希函数。 我尝试的第一个功能是添加ascii代码并使用模(%100),但是在第一次数据测试中我得到的结果很差:130个单词40次冲突。 最终的输入数据将包含8 000个单词(这是字典存储在文件中)。哈希表声明为int table [10000],其中包含单词在txt文件中的位置。 第一个问题是散列字符串的最佳算法是什么?以及如何确定哈希表的大小? 提前致谢 ! :-)

19
最大单笔销售利润
假设我们得到了一个由n个整数组成的数组,它们表示一天中的股票价格。我们希望找到一对(buyDay,sellDay) ,与buyDay≤sellDay,例如,如果我们买了股票buyDay卖了上sellDay,我们将最大限度地提高我们的利润。 显然,有一个O(n 2)解决方案,可以尝试所有可能的对(buyDay,sellDay),并从所有对中获取最好的对。但是,是否有更好的算法,也许可以在O(n)时间内运行?

30
从总和等于给定数的数组中查找一对元素
给定n个整数数组并给定数字X,找到所有总和等于X的唯一元素对(a,b)。 以下是我的解决方案,它是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] + …
122 algorithm 


8
尾递归如何工作?
我几乎了解尾递归的工作原理以及它与普通递归之间的区别。我只是不明白为什么它不要求堆栈来记住它的返回地址。 // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int factorial (int n) { return fac_times (n, 1); } // normal recursion int factorial (int n) { if (n == 0) return 1; …

13
在O(n)时间和O(1)空间中查找重复项
输入:给定n个元素组成的数组,其中包含从0到n-1的元素,这些数字中的任何一个都出现多次。 目标:在O(n)中查找这些重复数字,并且仅使用恒定的存储空间。 例如,假设n为7,数组为{1、2、3、1、3、0、6},答案应该为1和3。我在这里检查了类似的问题,但答案使用了诸如HashSetetc之类的一些数据结构。 有没有相同的有效算法?
121 c++  c  algorithm 



16
如何从三个点计算角度?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 2年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它当前不接受新的答案或互动。 可以说你有这个: P1 = (x=2, y=50) P2 = (x=9, y=40) P3 = (x=5, y=20) 假设这P1是一个圆的中心。总是一样的。我想要由P2和构成P3的角度,换句话说就是与相邻的角度P1。内角要精确。它始终是锐角,因此小于-90度。 我以为:那是简单的几何数学。但是我现在已经寻找了大约6个小时的公式,却只发现人们谈论复杂的NASA东西,例如arccos和矢量标量产品。我的头好像在冰箱里。 这里的一些数学大师认为这是一个简单的问题?我认为这里的编程语言并不重要,但是对于那些认为确实重要的人来说:java和Objective-c。我都需要它,但是还没有为它们添加标签。
120 algorithm  math  geometry 

15
在球体上平均分配n个点
我需要一种算法,该算法可以使我在球体上的位置保持N个点(可能少于20个),并模糊地将它们分散开。不需要“完美”,但是我只需要它,所以它们都不会聚在一起。 这个问题提供了很好的代码,但是我找不到统一的方法,因为这似乎是100%随机的。 推荐的这篇博客文章有两种方法可以输入球体上的点数,但是Saff和Kuijlaars算法恰好是我可以转录的伪代码,而我发现的代码示例包含“ node [k]”,而我无法看到解释并破坏了这种可能性。第二个博客示例是“黄金分割螺旋”,它给了我奇怪的,成堆的结果,但没有明确的方法来定义恒定半径。 这种算法从这个问题好像它可能工作,但我不能拼凑那是什么网页上成伪代码或任何东西。 我遇到的其他一些问题线程涉及随机均匀分布,这增加了我不关心的复杂程度。我很抱歉这是一个愚蠢的问题,但是我想表明我确实看上去很努力,但仍然表现不佳。 因此,我要寻找的是简单的伪代码,以将N个点均匀地分布在一个单位球体上,该点以球坐标或笛卡尔坐标返回。如果它甚至可以通过一点随机分布就更好了(想想围绕一颗恒星的行星,适当散开,但还有回旋余地)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.