题意
题目链接
可以翻转任意列,求全是1和全是0的行,最多有多少行。
思路
对一行而言,能翻转成相同的(同为1,或者同为0),则相等。能反转成相反的,则巧好,全部相反。
代码
class Solution {
public:
string exchange(const string &in)
{
string tmp;
for (auto &index:in)
tmp += (index == '1' ? "0": "1");
return tmp;
}
int maxEqualRowsAfterFlips(vector<vector<int>>& matrix) {
map<string, int> visit;
for (auto &s:matrix)
{
string tmp = "";
for (auto &index : s)
tmp += index + '0';
visit[tmp]++;
}
int ans = 1;
for (auto &index:visit)
{
auto tmp = exchange(index.first);
ans = max(ans, index.second + (visit.count(tmp) > 0 ? visit[tmp] : 0));
}
return ans;
}
};