Pythonのバイナリマトリックスで左端の1が存在する列インデックスを見つけるプログラム?
2Dバイナリ行列があるとします。ここでは、各行が昇順で並べ替えられ、0が1の前に来る場合、値が1の左端の列インデックスを見つける必要があります。そのような結果がない場合は、-1を返します。
したがって、入力が次のような場合
0 | 0 | 0 | 1 |
0 | 0 | 1 | 1 |
0 | 0 | 1 | 1 |
0 | 0 | 1 | 0 |
2番目の列がマトリックス全体でほとんど1を残しているため、出力は2になります。
これを解決するには、次の手順に従います。
-
行列が空の場合、
-
-1を返す
-
-
N:=行列の行数
-
M:=行列の列数
-
i:=0、j:=M-1
-
左端:=-1
-
i
=0の場合、実行 -
matrix [i、j]が0と同じ場合、
-
i:=i + 1
-
-
それ以外の場合
-
左端:=j
-
j:=j-1
-
-
-
左端に戻る
例
class Solution: def solve(self, matrix): if not matrix or not matrix[0]: return -1 N = len(matrix) M = len(matrix[0]) i = 0 j = M - 1 leftmost = -1 while i < N and j >= 0: if matrix[i][j] == 0: i += 1 else: leftmost = j j -= 1 return leftmost ob = Solution() matrix = [ [0, 0, 0, 1], [0, 0, 1, 1], [0, 0, 1, 1], [0, 0, 1, 0] ] print(ob.solve(matrix))
入力
[ [0, 0, 0, 1], [0, 0, 1, 1], [0, 0, 1, 1], [0, 0, 1, 0] ]
出力
2
-
Pythonの二分木でk長のパスを見つけるプログラム
一意の値を含む二分木があり、別の値kもあるとすると、ツリー内のkの長さの一意のパスの数を見つける必要があります。パスは、親から子へ、または子から親へのいずれかになります。一部のノードが一方のパスに表示され、もう一方のパスには表示されない場合、2つのパスは異なると見なされます。 したがって、入力が次のような場合 k =3の場合、パスは[12,8,3]、[12,8,10]、[8,12,15]、[3,8,10]であるため、出力は4になります。 これを解決するために、次の手順に従います- 関数dfs()を定義します。これはノードを取ります ノードがnullの場合、 1とk
-
行列の転置を見つける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