मान लीजिए कि हमारे पास संख्याओं का एक 2D मैट्रिक्स है, अब दिए गए मैट्रिक्स में प्रत्येक शून्य के लिए और इसकी पंक्ति और कॉलम के सभी मानों को शून्य से बदलें, और अंतिम मैट्रिक्स लौटाएं।
इसलिए, यदि इनपुट मैट्रिक्स की तरह है, तो आउटपुट मैट्रिक्स होगा क्योंकि 0 वीं, दूसरी और तीसरी पंक्तियों में 0 होता है और अंतिम मैट्रिक्स में उन पंक्तियों में 0 होता है। इसी तरह 0वें, पहले और दूसरे कॉलम में 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]]