leetcode1091

この質問使用して、DFSのタイムアウト、また同じ問題に遭遇したコメントエリアを見て、それが非再帰的BFSに切り替える必要があることに気付いていない、ゲームを改善しようと、デバッグつ以上の時間が解決することができ、多くの時間を消費します。

パイソンを使用して、タイムアウトスキームは:( 5つの方向を使用してテストを介して、達成するために試みられたように、A)であることができます

1つの インポートSYS
 2  クラスのソリューション:
 3      DEF __init __(自己):
 4          self.visited = []
 5          self.distance = sys.maxsize
 6          #self.direction = [ - 1、 - 1 ]、[ - 10 ] 、[ - 11 ]、[ 0、 - 1 ]、[ 01 ]、[ 1、 - 1 ]、[ 10 ]、[ 11 ]]
 7         self.direction = [ 11 ]、[ 01 ]、[ 10 ]、[ - 11 ]、[ 1、 - 1 ]
 8          #self.direction = [ 11 ] [ 01 ]、[ 10 ]、[ 1、 - 1 ]
 9          #self.direction = [ 11 ]、[ 01 ]、[ 10 ]
10  
11      DEF DFS(自己、グリッド、N、I、J、距離):
 12          であれば I == N- 1及びj == N- 1 13              self.distance =分(self.distance、距離+ 1 14              リターン
15  
16          もし距離> = self.distance:
 17              リターン
18          
19          場合 self.visited [I] [J] == 0 20              self.visited [I] [J] = 1 
21              までの距離+ = 1 
22              のために直接的自己.direction:
 23                 X = I +ダイレクト[ 0 ]
 24                  、Y = J +ダイレクト[ 1 ]
 25                  であれば、X < 0またはX> = Nまたはy < 0またはy> = N:
 26                      続行
27                  もしグリッド[X] [Y] == 1または[X] [Y] == self.visited 1 28が                     続行
29                  self.dfs(グリッド、N、X、Y、距離)
 30              距離- = 1 
31              self.visited [I] [J] = 0 
32  
33  
34      shortestPathBinaryMatrix(自己、グリッドDEF:'リスト[リストの[int] ') - > INT 35          N = LEN(グリッド)
 36          であればグリッド[ 0 ] [ 0 ] == 1又はグリッド[N- 1 ] [N- 1 ] == 1 37              リターン - 1 
38          self.visited = [ 0  ため _ におけるレンジ(N)] のため _ レンジ(N)]
 39          
40          self.dfs(グリッド、N、000 41          リターンself.distance 場合 self.distance <sys.maxsize  - 1

最初なのでそれがあること。

おすすめ

転載: www.cnblogs.com/asenyang/p/11031147.html