如何分析递归的时间互补性

时间:2017-08-18 20:01:37

标签: recursion time-complexity big-o

我使用递归完成了一个leetcode问题329:Given an integer matrix, find the length of the longest increasing path.,我不确定它的时间复杂度。

对于时间复杂度,首先是外面的循环。因此,它是         val ds = spark.readStream .format("text") .option("maxFilesPerTrigger", 1) .load(logDirectory) 对于两个循环。在循环内部,有一个递归调用T(m, n) = O(m*n)。就像

findPath

我完全迷失了这个。谢谢,如果你能帮我解释一下这个。

以下是我的代码:

T(m,n) = T(m-1, n)+T(m+1, n)+T(m, n-1)+T(m, n+1)

1 个答案:

答案 0 :(得分:0)

每次致电findPath后,cached[i][j]的内容将始终大于1.因此,对(i, j)位置的后续调用将导致递归调用周围的位置。然后我们可以推断每个位置(i, j)被称为最多4次,因为它只能通过调用水平或垂直相邻的位置来访问,只有第一个会导致进一步的递归调用。我们还假设matrix[i][j] >= lastValue 从未满足时的最坏情况。因此,上限为O(mn),其中m, nmatrix的维度。