2023-05-15每日一題
一、題目編號(hào)
1072. 按列翻轉(zhuǎn)得到最大值等行數(shù)
二、題目鏈接
點(diǎn)擊跳轉(zhuǎn)到題目位置
三、題目描述
給定 m x n 矩陣 matrix 。
你可以從中選出任意數(shù)量的列并翻轉(zhuǎn)其上的 每個(gè) 單元格。(即翻轉(zhuǎn)后,單元格的值從 0 變成 1,或者從 1 變?yōu)?0 。)
返回 經(jīng)過(guò)一些翻轉(zhuǎn)后,行與行之間所有值都相等的最大行數(shù)
四、解題代碼
class Solution {
unordered_map<string, int> hash;
public:
int maxEqualRowsAfterFlips(vector<vector<int>>& matrix) {
int m = matrix.size();
int n = matrix[0].size();
for(int i = 0; i < m; ++i){
string tmp;
for(int j = 0; j < n; ++j){
tmp += char(matrix[i][j] + '0');
}
if(tmp[0] == '1'){
for(int k = 0; k < n; ++k){
if(tmp[k] == '0'){
tmp[k] = '1';
} else{
tmp[k] = '0';
}
}
}
hash[tmp]++;
}
int max0 = 0;
for(auto iter = hash.begin(); iter != hash.end(); ++iter){
max0 = max(max0, iter->second);
}
return max0;
}
};
五、解題思路
(1) 首先思考一個(gè)問(wèn)題,如果光給一行元素的話,那么行與行之間所有值都相等的最大行數(shù)是多少。那么很顯然,是1。
(2) 接著思考下一個(gè)問(wèn)題,如果光給兩行元素的話,那么行與行之間所有值都相等的最大行數(shù)是多少。那么很顯然,至少為1,可能為2。那么怎么可能為2呢。
假設(shè)兩行為 1 1 1 和 1 1 1(本身就相等),那么一定為2,。如果為 1 1 0 和 0 0 1,那么也為2,翻轉(zhuǎn)第三列即可。
(3) 那么我們便擁有了思路,得出每一行的數(shù)字字符串,如果字符串第一個(gè)字符為‘0’,那么直接在哈希表中將該種字符串的數(shù)量+1,如果第一個(gè)字符為‘1’,那么先翻轉(zhuǎn)該字符串,再直接在哈希表中將該種字符串的數(shù)量加一。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-445905.html
(4) 最后返回哈希表中某種字符串?dāng)?shù)量的最大值即可。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-445905.html
到了這里,關(guān)于2023-05-15LeetCode每日一題(按列翻轉(zhuǎn)得到最大值等行數(shù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!