题目描述:2352. 相等行列对
给你一个下标从О开始、大小为n x n的整数矩阵grid,返回满足Ri行和C列相等的行列对(Rj,Cj)的数目。
如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。
示例:
代码:
//给你一个下标从О开始、大小为n x n 的整数矩阵grid,返回满足R行和C;列相等的行列对(Ri,Cj)的数目。
//如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。
#include<iostream>
#include<map>
#include<vector>
#include<string>
using namespace std;
class Solution {
public:
int equalpairs(vector<vector<int>>& grid) {
map<string, int> count;
int res = 0;
int n = grid.size();
for (int i = 0; i < n; i++) {
string str = "";
for (int j = 0; j < n; j++) {
str = str + to_string(grid[i][j]) + ".";
}
count[str]++;
}
for (int i = 0; i < n; i++) {
string str = "";
for (int j = 0; j < n; j++) {
str = str + to_string(grid[j][i]) + ".";
}
if (count.find(str) != count.end()) {
res = res + count[str];
}
}
return res;
}
};
int main() {
int n;
vector<vector<int>> grid;
cin >> n;
for (int i = 0; i < n; i++) {
vector<int> temp;
for (int j = 0; j < n; j++) {
int temp1;
cin >> temp1;
temp.push_back(temp1);
}
grid.push_back(temp);
}
Solution solution;
cout << solution.equalpairs(grid);
return 0;
}
涉及知识点:字符串拼接、整形转字符串函数、map容器、哈希查找