मान लीजिए कि हमारे पास 0s और 1s से मिलकर एक मैट्रिक्स है, हम मैट्रिक्स में कितने भी कॉलम चुन सकते हैं और उस कॉलम में प्रत्येक सेल को फ्लिप कर सकते हैं। किसी सेल को बदलने से उस सेल का मान 0 से 1 या 1 से 0 में बदल जाता है। हमें उन पंक्तियों की अधिकतम संख्या ज्ञात करनी होगी जिनमें कुछ संख्या में फ़्लिप के बाद सभी मान समान हों। तो अगर मैट्रिक्स की तरह है -
0 | 0 | 0 |
0 | 0 | 1 |
1 | 1 | 0 |
आउटपुट 2 होगा। ऐसा इसलिए है क्योंकि पहले दो कॉलम में मानों को परिवर्तित करने के बाद, अंतिम दो पंक्तियों में समान मान होते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- x :=मैट्रिक्स, m :=पंक्तियों की संख्या और n :=स्तंभों की संख्या और r :=0
- x में प्रत्येक तत्व के लिए
- सी :=0
- a :=i में सभी तत्वों की एक सूची, l XOR i डालें
- x में प्रत्येक तत्व j के लिए
- अगर j =i या j =a, तो c को 1 से बढ़ा दें
- r :=अधिकतम c और r
- रिटर्न आर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def maxEqualRowsAfterFlips(self, matrix): x = matrix m = len(matrix) n = len(matrix[0] ) r =0 for i in x: c=0 a=[l ^ 1 for l in i] for j in x: if j== i or j ==a: c+=1 r=max(c, r) return r ob = Solution() print(ob.maxEqualRowsAfterFlips([[0,0,0],[0,0,1],[1,1,0]]))
इनपुट
[[0,0,0],[0,0,1],[1,1,0]]
आउटपुट
2