53得票6回答
快速排序相对于堆排序的优越性

堆排序的最坏时间复杂度是O(nlogn),而快速排序的时间复杂度为O(n^2)。 但实际证据表明,快速排序更优秀。为什么呢?

52得票3回答
谷歌浏览器中的array.splice()的时间复杂度是多少?

如果我使用splice()方法从一个数组中删除一个元素,就像这样:arr.splice(i, 1); 由于它将i后面的所有元素都移动了一次,所以在最坏情况下,这会是O(n)吗?或者说,在链表的某些神奇操作下,时间是常数?

52得票6回答
哪个算法更快,O(N)还是O(2N)?

谈到大O符号,如果一个算法时间复杂度为O(N),另一个算法的复杂度为O(2N),哪个更快?

52得票5回答
为什么计算复杂度是O(n^4)?

int sum = 0; for(int i = 1; i < n; i++) { for(int j = 1; j < i * i; j++) { if(j % i == 0) { for(int k = 0; k < j; ...

51得票5回答
简单说一下Big-Theta和Big O符号的区别

在试图理解 Theta 和 O 符号之间的区别时,我遇到了以下声明:The Theta-notation asymptotically bounds a function from above and below. When we have only an asymptotic upper b...

51得票5回答
Levenshtein距离算法是否比O(n*m)更好?

我一直在寻找一种先进的莱文斯坦距离算法,到目前为止,我发现最好的算法是O(n*m),其中n和m是两个字符串的长度。 算法之所以处于这个级别,是因为空间而不是时间,需要创建一个类似于以下矩阵的两个字符串的矩阵: 是否有一种公开可用的编辑距离算法比O(n*m)更好?我不排斥查看高级计算机科学...

50得票5回答
选择算法的运行时间为什么是O(n)?

根据Wikipedia,像快速选择这样的基于分区的选择算法具有O(n)的运行时间,但我对此持怀疑态度。有人能解释一下为什么它是O(n)吗? 在普通的快速排序中,运行时间为O(n log n)。每次我们将分支分成两个分支(大于枢轴和小于枢轴),我们需要在两个分支中继续处理,而快速选择只需要处理...

50得票30回答
将一个由正数和负数组成的数组重新排列,使得正数在一端,负数在另一端。

最近我遇到了一道微软软件工程师的面试题。 给定一个由正数和负数组成的数组,重新排列它使得正整数在一端,负整数在另一端,但保留它们在原始数组中出现的顺序。 例如,给定 [1,7,-5,9,-12,15] 答案将是:[-5,-12,1,7,9,15] 这应该在O(n)时间复杂度和O(1)空间复...

48得票6回答
获取两个对象键的交集的最佳方法是什么?

我有两个对象字面量如下:var firstObject = { x: 0, y: 1, z: 2, a: 10, b: 20, e: 30 } var secondObject = { x: 0, y: 1, z: 2...

47得票39回答
用于确定是否存在 n...n+m 的数组的算法?

我在Reddit上看到了这个问题,但没有给出积极的解决方案,所以我认为这是一个在这里提问的完美问题。这是关于面试问题的一个主题: 编写一个方法,它接受大小为m的int数组,并返回(True/False)如果该数组由n...n+m-1的数字组成,且该范围内仅包含这些数字。不能保证数组已排序。(...