मान लीजिए कि हमारे पास 2d बाइनरी मैट्रिक्स है, जहां 1 एक बम का प्रतिनिधित्व करता है और 0 एक खाली सेल का प्रतिनिधित्व करता है। जब कोई बम फटता है, तो एक ही पंक्ति और स्तंभ के सभी स्थान क्षतिग्रस्त हो जाते हैं। हमें रिक्त स्थान की संख्या का पता लगाना होगा ताकि हम क्षतिग्रस्त न हों।
तो, अगर इनपुट पसंद है
1 | 1 | 0 |
0 | 0 | 0 |
0 | 0 | 0 |
तो आउटपुट 2 होगा, क्योंकि नीचे दाएँ सेल में दो स्थान हैं और मध्य दाएँ सेल सुरक्षित हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
-
r :=मैट्रिक्स की पंक्ति गणना के समान आकार की एक सूची और असत्य से भरें
-
c :=मैट्रिक्स के कॉलम काउंट के समान आकार की एक सूची और असत्य से भरें
-
मैं के लिए 0 से लेकर मैट्रिक्स की पंक्ति संख्या -1 तक की सीमा में हूं, करें
-
j के लिए श्रेणी 0 से लेकर मैट्रिक्स -1 की कॉलम संख्या तक, करें
-
यदि मैट्रिक्स [i, j] 1 के समान है, तो
-
r[i] :=सच, c[j] :=सच
-
-
-
-
सीटी:=0
-
मैं के लिए 0 से लेकर मैट्रिक्स की पंक्ति संख्या -1 तक की सीमा में हूं, करें
-
j के लिए श्रेणी 0 से लेकर मैट्रिक्स -1 की कॉलम संख्या तक, करें
-
अगर r[i] गलत है और c[j] गलत है, तो
-
सीटी:=सीटी + 1
-
-
-
-
वापसी सीटी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, matrix): r = [False for i in range(len(matrix))] c = [False for i in range(len(matrix[0]))] for i in range(len(matrix)): for j in range(len(matrix[0])): if matrix[i][j] == 1: r[i] = True c[j] = True ct = 0 for i in range(len(matrix)): for j in range(len(matrix[0])): if r[i] == False and c[j] == False: ct += 1 return ct ob = Solution() matrix = [ [1, 1, 0], [0, 0, 0], [0, 0, 0] ] print(ob.solve(matrix))
इनपुट
[ [1, 1, 0], [0, 0, 0], [0, 0, 0] ]
आउटपुट
2