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