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

Pythonで行列ゼロを設定する


1つの要素が0の場合、その行列に行列があると考えて、その行列の行と列全体を0にします。変換はインプレースで行われます。したがって、行列が-

の場合
1 0 1
1 1 1
1 1 1

その場合、出力は-

になります
0 0 0
1 0 1
1 0 1

手順を見てみましょう-

  • n:=行数、m:=列数、フラグの設定:=false
  • mat [0、0] =0の場合、フラグを設定します:=true
  • 行を設定:=false、列を設定:=false
  • 1からnの範囲のiの場合
    • mat [i、0] =0の場合、col:=Trueに設定し、ループを解除します
  • 1からmの範囲のiの場合
    • mat [0、i] =0の場合、行:=Trueを設定し、ループを解除します
  • 1からnの範囲のiの場合
    • 1からmの範囲のjの場合
      • mat [i、j] =0の場合、mat [i、0] =0およびmat[0、j]:=0
      • に設定します。
  • 1からnの範囲のiの場合
    • 1からmの範囲のjの場合
      • mat [i、0] =0およびmat[0、j] =0の場合、mat [i、j]=0に設定します
  • フラグが設定されている場合
    • 0からnの範囲のiの場合、mat [i、0]:=0
    • 0からmの範囲のiの場合、mat [0、i]:=0
  • それ以外の場合
    • colが設定されている場合、0からnの範囲のiの場合、mat [i、0]:=0
    • 行が設定されている場合、0からmの範囲のiの場合、mat [0、i]:=0

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

class Solution(object):
   def setZeroes(self, matrix):
      n = len(matrix)
      m = len(matrix[0])
      flag = False
      if matrix[0][0] == 0:
         flag = True
         row = False
         column = False
      for i in range(1,n):
         if matrix[i][0] == 0:
            column = True
            break
      for i in range(1,m):
         if matrix[0][i] == 0:
            row = True
            break
      for i in range(1,n):
         for j in range(1,m):
            if matrix[i][j] == 0:
               matrix[0][j] = 0
               matrix[i][0]=0
      for i in range(1,n):
         for j in range(1,m):
            if not matrix[i][0] or not matrix[0][j]:
               matrix[i][j] = 0
      if flag:
         for i in range(n):
            matrix[i][0] = 0
         for i in range(m):
            matrix[0][i]=0
      else:
         if column:
            for i in range(n):
               matrix[i][0]=0
         if row:
            for i in range(m):
               matrix[0][i]=0
      return matrix
ob1 = Solution()
print(ob1.setZeroes([[1,0,1],[1,1,1],[1,1,1]]))

入力

[[1,0,1],[1,1,1],[1,1,1]]

出力

[[0, 0, 0], [1, 0, 1], [1, 0, 1]]

  1. Pythonセット操作。

    数学では、集合はそれ自体がオブジェクトと見なされる別個のオブジェクトのコレクションです。たとえば、2、4、6の数字は、別々に考えると別個のオブジェクトですが、まとめて考えると、{2,4,6}と書かれたサイズ3の単一のセットを形成します。 セットの操作 操作 表記 意味 交差点 A∩B との両方にあるすべての要素 ユニオン A∪B いずれかまたは(または両方)にあるすべての要素 違い A − B 含まれているが含まれていないすべての要素 補完 (または) 含まれていないすべての要素 Pythonでは、リストと比較して、セットを使用する主な利点は、特定の要素がセットのメンバー

  2. Pythonセット

    Pythonセットは、順序付けされていないを含むコレクションタイプです。 ユニークのコレクション および不変 オブジェクト。つまり、Pythonセットは重複するアイテムを保持できず、セットが作成されると、アイテムを変更することはできません。 注:セットのアイテムは不変です。つまり、アイテムを変更することはできません。ただし、セット自体は変更可能です。つまり、セットにアイテムを追加したり、セットからアイテムを削除したりできます。 順序は維持されません。たとえば、同じセットを印刷するたびに、アイテムの順序が異なる場合があります。 Pythonでは、セットは中括弧{}を使用して構築されます セッ