Islands¶の200番号リスト - leetcode-半ばリンク

57.92パーセントをmycode

クラス溶液(オブジェクト):
     DEF numIslands(自己、グリッド):
         "" " タイプグリッド:リスト[リスト[STR] 
        :RTYPE:INT 
        """ 
        DEF 再帰(I、J、行、列):
             もし I> = 0 および iが<行 J> = 0  <J :COL
                 もしグリッド[I] [J]を== ' 0 ' リターン 
                グリッド[I] [J] = ' 0 ' 
                であれば、I-1> = 0:
                    再帰(I -1 、J、行、
                COL)もし I + 1 < 行:
                    再帰(I +1 、J、行、列)
                 場合、J-1> = 0:
                    再帰(I、J -1 、行、列)
                 場合、J + 1 <= COL:
                    再帰(I 、J +1 、行、列)
             リターン 
        なら ない:グリッド
             戻り0  = LEN(グリッド)
        COL = LEN(グリッド[0])
         のための I における範囲(行)
             のためにJ における範囲(COL):
                 もしグリッド[I] [J] == ' 1 ' プリント( 'もし..'、グリッド)
                    再帰(I、J、行、列)
                    グリッド[I] [J] = ' 1 ' 
                    #の印刷( 'もし..'、グリッド)を 
        カウント= 0 
         のための I における範囲(行)
             のために、J における範囲(COL):
                 もしグリッド[I] [J] == ' 1 ' 
                    カウント + = 1つの
         復帰 カウント

参考:

アイデア:実際には、第二サイクルは不要であるため、それは前にカウントすることができます

クラスソリューション:
     DEF numIslands(自己、グリッド):
         "" " タイプグリッド:リスト[リスト[STR] 
        :RTYPE:INT 
        """ 
        RES = 0
         のための R における範囲(LEN(グリッド))
             のために C 範囲(LEN(グリッド[0])):
                 もしグリッド[R] [C] == " 1 " 
                    self.dfs(グリッド、R、C)
                    RES + = 1つの
         戻りRES 
        
    DEF DFS(自己、グリッド、I、J ):
        DIRS = [-1、0]、[0、1]、[0、-1]、[1、0] 
        グリッド[I] [J] = " 0 " 
        のための DIR DIRS:
            NR、NC = iは、DIR + [0]、J + DIR [1 ]
             であれば NRが> = 0  NC> = 0 及び NR < LEN(グリッド) NC < LEN(グリッド[0]):
                 もしグリッド[NR] [NC] == " 1 " 
                    self.dfs(グリッド、NR、NC)

 

おすすめ

転載: www.cnblogs.com/rosyYY/p/10969281.html