Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตั้งค่าศูนย์เมทริกซ์ใน Python


พิจารณาว่าเรามีเมทริกซ์ ในเมทริกซ์นั้นถ้าองค์ประกอบหนึ่งเป็น 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
  • set row :=false และ col :=false
  • สำหรับฉันอยู่ในช่วง 1 ถึง n
    • ถ้า mat[i, 0] =0 ให้ตั้งค่า col :=True และทำลายลูป
  • สำหรับฉันอยู่ในช่วง 1 ถึง m
    • ถ้า mat[0, i] =0 ให้ตั้งค่า row :=True และแตกลูป
  • สำหรับฉันอยู่ในช่วง 1 ถึง n
    • สำหรับ j ในช่วง 1 ถึง m
      • ถ้า mat[i, j] =0 ให้ตั้งค่า mat[i, 0] =0 และ mat[0, j] :=0
  • สำหรับฉันอยู่ในช่วง 1 ถึง n
    • สำหรับ j ในช่วง 1 ถึง m
      • ถ้า mat[i, 0] =0 และ mat[0, j] =0 ให้ตั้งค่า mat[i, j] =0
  • ถ้าตั้งค่าสถานะไว้
    • สำหรับ i ในช่วง 0 ถึง n, mat [i, 0] :=0
    • สำหรับ i ในช่วง 0 ถึง m, mat[0, i] :=0
  • อย่างอื่น
    • ถ้าตั้งค่า col แล้วสำหรับ i ในช่วง 0 ถึง n mat [i, 0] :=0
    • ถ้ากำหนดแถวไว้ สำหรับ i ในช่วง 0 ถึง m ให้ใช้ 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]]