Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのゼロ値に対して行と列の各要素をゼロに変換するプログラム


指定されたマトリックスの各ゼロに対して、数値の2Dマトリックスがあり、その行と列のすべての値をゼロに置き換えて、最終的なマトリックスを返すとします。

したがって、入力が行列のようなものである場合、0、2、3行目には0が含まれ、最後の行列にはこれらの行に0が含まれるため、出力は行列になります。同様に、0番目、1番目、2番目の列には0が含まれ、最終的な行列にはこれらの列に0が含まれます。

これを解決するには、次の手順に従います。

n := row count, m := column count
res := make a matrix of size n x m and fill with 0
transpose := transpose given matrix
for each row i, do
   if 0 not in matrix[i], then
      for each column j in matrix, do
         if 0 not in transpose[j], then
            res[i, j] := matrix[i, j]
return res
を実行します。

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, matrix):
      n, m = len(matrix), len(matrix[0])
      res = [[0 for __ in range(m)] for _ in range(n)]
      transpose = [list(row) for row in zip(*matrix)]

      for i in range(n):
         if 0 not in matrix[i]:
            for j in range(m):
               if 0 not in transpose[j]:
                  res[i][j] = matrix[i][j]

      return res

ob = Solution()
matrix = [
      [6, 0, 0, 6, 9],
      [4, 9, 9, 4, 8],
      [0, 8, 3, 4, 2],
      [9, 0, 7, 8, 3],
      [5, 2, 9, 6, 8]
]
print(ob.solve(matrix))

入力

matrix = [ [6, 0, 0, 6, 9], [4, 9, 9, 4, 8], [0, 8, 3, 4, 2], [9, 0, 7, 8, 3], [5, 2, 9, 6, 8] ]

出力

[[0, 0, 0, 0, 0], [0, 0, 0, 4, 8], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 6, 8]]

  1. バブルソート用のPythonプログラム

    この記事では、バブルソートの並べ替え手法の実装について学習します。 次の図は、このアルゴリズムの動作を示しています- アプローチ 最初の要素(インデックス=0)から始めて、現在の要素を配列の次の要素と比較します。 現在の要素が配列の次の要素よりも大きい場合は、それらを交換します。 現在の要素が次の要素よりも小さい場合は、次の要素に移動します。 手順1を繰り返します。 次に、以下の実装を見てみましょう- 例 def bubbleSort(ar):    n = len(arr)    # Traverse through

  2. 線形探索のためのPythonプログラム

    この記事では、線形検索とPython3.xでの実装について学習します。またはそれ以前。 アルゴリズム Start from the leftmost element of given arr[] and one by one compare element x with each element of arr[] If x matches with any of the element, return the index value. If x doesn’t match with any of elements in arr[] , return -1 or element no