波波老师您好,关于这道题,我还有两个地方不太理解。
在老师给出的答案中,时间复杂度为O(m*n*m*n),空间复杂度为O(m*n)。我对这两个复杂度的理解不知道是否正确,希望老师指正。以下是我所做出的尝试:
对于时间复杂度而言,首先我们要对m*n的每一个格子都进行搜索(对应代码中的两个for循环),这是第一个m*n。然后对于每一个格子来说,我们最坏的情况是把除了这个格子外的所有格子搜索一遍,每一次搜索对应一次递归调用占用的时间,这对应了后一个m*n。
对于空间复杂度而言,显而易见我们使用了m*n的二维数组,但我想问递归调用不会占用空间复杂度吗?
除了老师给出的回溯解法,我还在思考这道题是否有暴力解法,以及暴力解法的时间,空间复杂度,但我想了很久,感觉回溯法就是这道题的暴力解法,请问老师是否正确,还是说有别的暴力解法?我实在想不出还有什么所谓的“暴力方法”能解决这道题,我也尝试对这道题使用迭代法进行解决,参考了老师之前运用stack把递归转化成迭代的技术,但这样迭代后,感觉时间复杂度和空间复杂度应该和递归解法一致?