ধরুন আমাদের 0s এবং 1s সমন্বিত একটি ম্যাট্রিক্স আছে, আমরা ম্যাট্রিক্সের যেকোন সংখ্যক কলাম বেছে নিতে পারি এবং সেই কলামের প্রতিটি সেল ফ্লিপ করতে পারি। একটি ঘরকে রূপান্তর করলে সেই ঘরটির মান 0 থেকে 1 বা 1 থেকে 0 পর্যন্ত পরিবর্তিত হয়। কিছু সংখ্যক ফ্লিপ করার পরে আমাদের সর্বাধিক সংখ্যক সারি খুঁজে বের করতে হবে যেগুলির সমস্ত মান সমান। তাই ম্যাট্রিক্স যদি −
এর মত হয়0 | 0 | 0 |
0 | 0 | 1 |
1 | 1 | 0 |
আউটপুট হবে 2। এর কারণ হল প্রথম দুটি কলামে মান রূপান্তর করার পর, শেষ দুটি সারিতে সমান মান রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- x :=ম্যাট্রিক্স, m :=সারির সংখ্যা এবং n :=কলামের সংখ্যা এবং r :=0
- প্রতিটি উপাদানের জন্য i x
- c :=0
- a :=সমস্ত উপাদানের একটি তালিকা l i তে, l XOR i ঢোকান
- 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