Pythonの2Dマトリックスで個別の島の数を見つける
グリッドが-
のようであると仮定します1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 1 |
これを解決するには、次の手順に従います-
-
2つのメソッドがあります。1つはnumIslands()およびmakeWater()と呼ばれる島の数をカウントするために使用されます。 makeWater()は次のようになります-
-
グリッドの行数が0の場合、0を返します
-
n =行数およびm:=列数、およびans:=0
-
0からn–1の範囲のiの場合
-
0からmの範囲のjの場合
-
grid [i、j] =1の場合、ans:=ans + 1
-
makeWater(i、j、n、m、グリッド)
-
-
-
makeWater()は、インデックスi、j、行と列のカウントnとm、およびグリッドを取得します
-
i<0またはj<0またはi>=nまたはj>=mの場合、このメソッドから戻る
-
grid [i、j] =0の場合は戻り、それ以外の場合はgrid [i、j]:=0
を作成します。 -
makeWater(i + 1、j、n、m、grid)を呼び出す
-
makeWater(i、j + 1、n、m、grid)を呼び出す
例
理解を深めるために、次の実装を見てみましょう-
class Solution(object): def numIslands(self, grid): """ :type grid: List[List[str]] :rtype: int """ if len(grid) == 0: return 0 n= len(grid) m = len(grid[0]) ans = 0 for i in range(n): for j in range(m): if grid[i][j] == "1": ans+=1 self.make_water(i,j,n,m,grid) return ans def make_water(self,i,j,n,m,grid): if i<0 or j<0 or i>=n or j>=m: return if grid[i][j] == "0": return else: grid[i][j]="0" self.make_water(i+1,j,n,m,grid) self.make_water(i,j+1,n,m,grid) self.make_water(i-1,j,n,m,grid) self.make_water(i,j-1,n,m,grid)
入力
[["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"]]
出力
3
-
リスト内の最小数を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal
-
行列の転置を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 行列が与えられた場合、転置を同じ行列に格納して表示する必要があります。 行列の転置は、行を列に、列を行に変更することで得られます。つまり、A行列の転置はA[i][j]をA[j][i]に変更することで得られます。 以下に示す実装を見てみましょう- 例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): &nbs