विचार करें कि हमारे पास एक मैट्रिक्स है, उस मैट्रिक्स में यदि एक एलिमेंट 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
- row := false सेट करें, और col := false
- i को 1 से n तक की रेंज में
- यदि mat[i, 0] = 0, तो col := True सेट करें और लूप तोड़ें
- i को 1 से m तक की रेंज में
- यदि mat[0, i] = 0, तो row := True सेट करें और लूप तोड़ें
- i को 1 से n तक की रेंज में
- j को 1 से m तक की रेंज में
- यदि mat[i, j] = 0, तो mat[i, 0] = 0 और mat[0, j] := 0 सेट करें
- j को 1 से m तक की रेंज में
- i को 1 से n तक की रेंज में
- j को 1 से m तक की रेंज में
- यदि mat[i, 0] = 0 और mat[0, j] = 0, तो mat[i, j] = 0 सेट करें
- j को 1 से m तक की रेंज में
- यदि फ्लैग सेट है
- i को 0 से n तक की रेंज में, mat[i, 0] := 0
- i को 0 से m तक की रेंज में, mat[0, i] := 0
- अन्यथा
- यदि col सेट है, तो i को 0 से n तक की रेंज में, mat[i, 0] := 0
- यदि row सेट है, तो i को 0 से m तक की रेंज में, mat[0, i] := 0
यह O(1) अतिरिक्त स्पेस समाधान पहली पंक्ति और कॉलम का उपयोग मार्कर के रूप में करता है।
बेहतर समझ के लिए निम्न कार्यान्वयन देखें -
उदाहरण
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]]