Questions tagged «algorithm»

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



26
您如何看待您的主键?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 在我的团队中进行的相当活跃的讨论中,我被认为是大多数人喜欢的主键。我们有以下几组: Int / BigInt哪个自动增量是足够好的主键。 主键应至少包含3列。 id,GUID和人类可读的行标识符都应区别对待。 PK的最佳方法是什么?如果您能证明自己的观点,那就太棒了。上面有没有更好的方法? 编辑:任何人都有一个简单的示例/算法来生成很好地缩放行的人类可读的标识符?

8
搜索元素的有效方法
最近我接受了一次采访,他们问我一个“ 搜索 ”问题。 问题是: 假设有一个(正)整数数组,每个元素都是+1或-1与其相邻元素比较。 例: array = [4,5,6,5,4,3,2,3,4,5,6,7,8]; 现在搜索7并返回其位置。 我给了这个答案: 将值存储在临时数组中,对其进行排序,然后应用二进制搜索。 如果找到该元素,则返回其在临时数组中的位置。 (如果数字出现两次,则返回其第一次出现) 但是,他们似乎对此答案并不满意。 正确的答案是什么?

14
Voronoi图最容易实现的算法?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 去年关闭。 改善这个问题 实现Voronoi图的简单算法是什么? 我找不到伪形式的任何算法。请分享一些Voronoi图算法,教程等链接。

4
迭代字符串的时间复杂性实际上是O(n ^ 2)还是O(n)?
我正在处理CTCI之外的问题。 第1章的第三个问题是您采用了诸如 'Mr John Smith ' 并要求您将中介空间替换为%20: 'Mr%20John%20Smith' 作者使用Python提供了此解决方案,称其为O(n): def urlify(string, length): '''function replaces single spaces with %20 and removes trailing spaces''' counter = 0 output = '' for char in string: counter += 1 if counter > length: return output elif char == ' ': output = output + …

16
基于数基系统的算法?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我最近注意到,有很多算法部分或全部基于创造性基础中数字的巧妙使用。例如: 二项式堆基于二进制数,更复杂的偏斜二项式堆基于偏斜二进制数。 一些用于生成按字典顺序排列的排列的算法基于乘数系统。 可以将尝试看作是一棵树,它以适当的基数一次查看字符串的一位。 霍夫曼编码树被设计为使树中的每个边缘在某种二进制表示中编码为零或一。 斐波那契搜索中使用斐波那契编码,并反转某些类型的对数。 我的问题是:还有哪些其他算法将聪明的数字系统用作直觉或证明的关键步骤?。我正在考虑就该主题进行一次讨论,因此,我必须从中汲取更多的例子,效果会更好。

12
生成列表的所有排列,而没有相邻的相等元素
当我们对列表进行排序时,例如 a = [1,2,3,3,2,2,1] sorted(a) => [1, 1, 2, 2, 2, 3, 3] 相等的元素在结果列表中始终相邻。 如何完成相反的任务-整理列表,使相等的元素永远不会(或尽可能少)相邻? 例如,对于上面的列表,一种可能的解决方案是 p = [1,3,2,3,2,1,2] 更正式地说,给定一个列表a,生成p它的排列,使对的数量最小化p[i]==p[i+1]。 由于列表很大,因此不能选择生成和过滤所有排列。 额外的问题:如何有效地生成所有此类排列? 这是我用来测试解决方案的代码:https : //gist.github.com/gebrkn/9f550094b3d24a35aebd UPD:在这里选择获胜者是一个艰难的选择,因为许多人都给出了很好的答案。@VincentvanderWeele,@大卫Eisenstat,@Coady,@ enrico.bacis和@srgerg提供完美产生最佳的置换函数。@tobias_k和David也回答了奖金问题(生成所有排列)。大卫还提供了正确性证明。 @VincentvanderWeele的代码似乎是最快的。

28
查找不在列表中的最小整数
我的一位同事使用的一个有趣的采访问题: 假设您得到了一个很长的,未排序的无符号64位整数列表。您将如何找到列表中未出现的最小非负整数? 跟进:现在已经提出了明显的排序解决方案,您可以比O(n log n)更快吗? 跟进:您的算法必须在具有1GB内存的计算机上运行 澄清:该列表位于RAM中,尽管它可能会消耗大量的内存。预先给您列表的大小,例如N。
87 arrays  algorithm 

5
懒惰地生成排列
我正在寻找一种算法来生成集合的排列,以便可以在Clojure中列出它们的惰性列表。即,我想遍历一系列排列,在我请求之前不会计算每个排列,并且不必将所有排列立即存储在内存中。 或者,我正在寻找一种算法,给定特定集合,该算法将返回该集合的“下一个”排列,以这种方式,在其自己的输出上重复调用该函数将循环遍历原始集合的所有排列,一些订单(顺序无关紧要)。 有这样的算法吗?我见过的大多数置换生成算法都倾向于一次全部生成它们(通常是递归生成),而这些算法不能扩展到很大的集合。用Clojure(或另一种功能语言)实现可能会有所帮助,但我可以从伪代码中弄清楚。

3
如何为我的班级提供交换功能?
启用我swap的STL算法的正确方法是什么? 1)会员swap。是否std::swap使用SFINAE技巧来使用成员swap。 2)swap在同一个命名空间中独立。 3)的部分专业化std::swap。 4)以上全部。 谢谢。 编辑:好像我没有清楚地说出我的问题。基本上,我有一个模板类,我需要STL算法才能使用为该类编写的(有效)交换方法。
87 c++  algorithm  stl  swap 


13
计算圆点的位置
我目前对此有点空白。我有一个问题,我需要计算点在中心点周围的位置,假设它们都与中心等距。 点的数量是可变的,所以DrawCirclePoints(int x) 我确定有一个简单的解决方案,但是对于我自己的一生,我只是看不到它:)

26
在Java中获取集合的幂集
的幂集{1, 2, 3}是: {{}, {2}, {3}, {2, 3}, {1, 2}, {1, 3}, {1, 2, 3}, {1}} 假设我有一个SetJava语言: Set<Integer> mySet = new HashSet<Integer>(); mySet.add(1); mySet.add(2); mySet.add(3); Set<Set<Integer>> powerSet = getPowerset(mySet); 如何编写具有最佳可能复杂度的函数getPowerset?(我认为可能是O(2 ^ n)。)
86 java  algorithm  set  powerset 

12
在计算机科学中进行分类与在“真实”世界中进行分类
我正在考虑对软件中的算法进行排序,以及可能克服O(nlogn)障碍的可能方法。从实际意义上讲,我认为不可能进行更快的排序,所以请不要以为我可以。 话虽如此,看来对于几乎所有的排序算法,软件都必须知道每个元素的位置。否则有意义的是,它将如何知道根据某些排序标准将每个元素放置在何处? 但是,当我将这种想法与现实世界相冲突时,离心机不知道每个分子在按密度对分子进行“分类”时所处的位置。实际上,它并不关心每个分子的位置。但是,由于每个分子都遵循密度和引力定律,因此它可以在相对较短的时间内对数万亿个项目进行分类-这让我思考。 在每个节点上有一些开销(附加到每个节点上的某个值或方法)是否有可能“强制”列表的顺序?类似于离心机,其中只有每个元素都在乎其在空间中的相对位置(相对于其他节点)。或者,这是否违反了计算中的某些规则? 我认为这里提出的主要观点之一是自然界的量子力学效应以及它们如何同时并行应用于所有粒子。 也许经典计算机会固有地将排序限制在的范围内O(nlogn),因为量子计算机可能能够将阈值越过进入O(logn)并行运行的算法。 离心机基本上是平行气泡排序的观点似乎是正确的,它的时间复杂度为O(n)。 我想下一个想法是,如果自然可以分类O(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.