题目来源:
https://leetcode.com/problems/unique-paths-iii/
自我感觉难度/真实难度:
题意:
分析:
回溯法,直接DFS就可以了
自己的代码:
class Solution: def uniquePathsIII(self, grid: List[List[int]]) -> int: res=0 n=len(grid) m=len(grid[0]) for i in range(n): for j in range(m): if grid[i][j]==1: start_i,start_j=i,j if grid[i][j]==2: end_i,end_j=i,j def dfs(grid,k,l): if grid[k][l]==-1: return if grid[k][l]==2: for i in range(n): for j in range(m): if grid[n][m]==0: return res+=1 return grid[k][l]=-1 left,right,up,down=l-1,l+1,k-1,k+1 if left>=0: dfs(grid,k,left) if right<=m: dfs(grid,k,right) if up>=0: dfs(grid,up,l) if down<=n: dfs(grid,down,l) dfs(grid,start_i,start_j) return res
代码效率/结果:
虽然有思路,但是写出来的代码细节通不过,注意退回去的时候
优秀代码:
代码效率/结果:
自己优化后的代码:
反思改进策略:
1.函数输入变量设计的时候,我们要的是输入每次不同的东西。如果是全局的东西,我们可以不当作输入变量
2.回溯法,如果需要改变全局变量的值,那么从DFS后面回去的时候,要改回来!!!