目录
题目:
示例:
分析:
代码+运行结果:
题目:
示例:
分析:
题目很简洁,就是要我们寻找行与列相同的对数。相同行与列不仅是要元素相同,还需要顺序也一样(难度变小了,如果不要求顺序一样的话,还需要单独统计元素以及出现次数,会稍微麻烦一点)
一般要寻找相同的数的时候,我们都会使用map或是set,遇到本题这种需要统计相同的数的数目的时候,我们就需要使用multiset或是map了,因为multiset可以存放相同的键,因此可以使用multiset来进行存放值,再用count来统计相同键值的数量。
首先我们先把矩阵的每一行都存放进multiset中,然后再遍历矩阵的每一列,如果multiset中存放着与之相同的行,那么就将结果添加相同的行数,遍历完成后就可以得出结果了。
代码+运行结果:
class Solution {
public:
int equalPairs(vector<vector<int>>& grid) {
int res=0;
multiset<vector<int>>temp; //可以存放相同元素的set
vector<int>t;
for(vector<int>g:grid) temp.insert(g); //将每行都先存放进set
for(int i=0;i<grid[0].size();i++){
t.clear();
for(int j=0;j<grid.size();j++) t.push_back(grid[j][i]); //提取出每列元素
res+=temp.count(t); //加上与列相同的行数,没有则是+=0
}
return res;
}
};