395得票12回答
斐波那契数列的计算复杂度

我理解大O符号,但不知道如何计算许多函数的复杂度。特别是,我一直在尝试弄清楚斐波那契数列的朴素版本的计算复杂度:int Fibonacci(int n) { if (n <= 1) return n; else return Fibonac...

10得票3回答
最坏情况下的运行时间复杂度用Big O表示,最好情况下用Ω表示,但为什么有时候最坏情况下也会使用Ω?

我有些困惑,我以为在描述最坏情况的运行时间时要使用大O符号,而Ω符号用于最好情况?能否有人解释一下? 那么(lg n)不是最好情况吗?(nlg n)才是最差情况?或者我误解了什么? 证明堆大小为n时Max-Heapify的最坏情况运行时间是Ω(lg n)。(提示:对于具有n个节点的堆...

13得票3回答
在一个范围内查找最接近的数

我遇到了一个与以下问题相关的情况: 我们有一个大小为n的整数数组A,我们有测试用例t,在每个测试用例中,我们都会得到一个数字m和一个范围[s,e],即我们会得到s和e,并且我们必须在该数组的范围内(A[s]-A[e])找到最接近m的数字。 您可以假设数组索引从1到n。 例如: A ...

14得票6回答
O(N)算法如何也是一个O(N^2)算法?

我在阅读关于大O表示法的内容。 所以,任何一个O(N)算法也是一个O(N^2)算法。 这对我来说似乎很令人困惑,我知道大O只提供上限。 但是,一个O(N)算法怎么可能也是一个O(N^2)算法。 是否有任何例子可以说明这种情况? 我想不出任何例子。 有人能向我解释一下吗?

12得票4回答
矩阵加法的复杂度是什么?

我在另一个问题中看到有人提到矩阵加法是二次操作,但我认为它是线性的。 如果我把一个矩阵的大小加倍,我需要计算双倍的加法,而不是四倍。 主要分歧似乎在于问题的规模大小。对我来说,这是矩阵中元素的数量。其他人则认为是列数或行数,因此复杂度为O(n^2)。 我认为将矩阵加法视为二次操作是有问题...

73得票3回答
平均正则表达式算法的时间复杂度是什么?

我并不陌生于使用正则表达式,我理解它们基于有限状态机的基本原理。 然而,我的算法分析能力不太行,我不太明白正则表达式与基本的线性搜索相比如何。我问这个问题是因为从表面上看,它似乎是一个线性数组搜索(如果正则表达式很简单的话)。 我可以去哪里学习更多关于实现正则表达式引擎的内容?

21得票4回答
快速检查集合是否是已存储集合的超集。

问题 给定 N 个包含 C 个布尔值的数组。我想把它们组织成一种数据结构,使得可以尽可能快地执行以下操作:给定一个新的数组,如果这个数组是任何存储的数组的“超集”,则返回 true。在此处,“超集”指:如果 B[i] 为真,则 A[i] 对于每个 i 都为真。如果 B[i] 为假,则 A[i...

9得票5回答
算法复杂度:在循环中使用if/else

我在想在以下情况下(在for循环下的if / else语句),复杂度是O(n)还是O(n^2): for character in string: if character==something: do something else: do s...

7得票5回答
为什么不是每个算法都是O(1)?

如果我们有一个包含 n 个整数的随机数组,需要计算这些整数的总和。 声明:最佳算法可以在 O(n) 的时间内完成此任务。 但是,我认为我们可以在 O(1) 的时间内完成。为什么呢? 因为我们知道 n 肯定被锁定在某个字段中(因为它是 int 类型且 int 是有限的),这意味着我可以在不...

20得票3回答
交集复杂度

在Python中,您可以通过以下方式获取两个集合的交集:>>> s1 = {1, 2, 3, 4, 5, 6, 7, 8, 9} >>> s2 = {0, 3, 5, 6, 10} >>> s1 & s2 set([3, 5, 6]...