मान लीजिए हमारे पास 0 और 1 से बनी एक मैट्रिक्स है, हम मैट्रिक्स में किसी भी संख्या में कॉलम चुन सकते हैं और उस कॉलम में हर सेल को फ्लिप कर सकते हैं। एक सेल को बदलने से उसका मान 0 से 1 या 1 से 0 हो जाता है। हमें कुछ संख्या में फ्लिप के बाद सभी मान समान वाली पंक्तियों की अधिकतम संख्या ढूंढनी है। इसलिए यदि मैट्रिक्स इस तरह है -
| 0 | 0 | 0 |
| 0 | 0 | 1 |
| 1 | 1 | 0 |
आउटपुट 2 होगा। ऐसा इसलिए है क्योंकि पहले दो कॉलम में मानों को बदलने के बाद, अंतिम दो पंक्तियों के मान समान हो जाते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- x := मैट्रिक्स, m := पंक्तियों की संख्या और n := कॉलम की संख्या और r := 0
- x में प्रत्येक तत्व i के लिए
- c := 0
- a := i में सभी तत्वों l के लिए एक सूची, l XOR 1 डालें
- x में प्रत्येक तत्व j के लिए
- यदि j = i या j = a, तो c को 1 से बढ़ाएं
- r := c और r का अधिकतम
- 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