class Solution {
public:
int equalPairs(vector<vector<int>>& grid) {
}
};
2352. 相等行列对
给你一个下标从 0 开始、大小为 n x n
的整数矩阵 grid
,返回满足 Ri
行和 Cj
列相等的行列对 (Ri, Cj)
的数目。
如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。
示例 1:
输入:grid = [[3,2,1],[1,7,6],[2,7,7]] 输出:1 解释:存在一对相等行列对: - (第 2 行,第 1 列):[2,7,7]
示例 2:
输入:grid = [[3,1,2,2],[1,4,4,5],[2,4,2,2],[2,4,2,2]] 输出:3 解释:存在三对相等行列对: - (第 0 行,第 0 列):[3,1,2,2] - (第 2 行, 第 2 列):[2,4,2,2] - (第 3 行, 第 2 列):[2,4,2,2]
提示:
n == grid.length == grid[i].length
1 <= n <= 200
1 <= grid[i][j] <= 105
原站题解
golang 解法, 执行用时: 104 ms, 内存消耗: 7.6 MB, 提交时间: 2023-06-06 09:24:12
func equalPairs(grid [][]int) (ans int) { for i := range grid { for j := range grid { ok := 1 for k := range grid { if grid[i][k] != grid[k][j] { ok = 0 break } } ans += ok } } return }
java 解法, 执行用时: 37 ms, 内存消耗: 44.9 MB, 提交时间: 2023-06-06 09:23:51
class Solution { public int equalPairs(int[][] grid) { int n = grid.length; int ans = 0; for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { int ok = 1; for (int k = 0; k < n; ++k) { if (grid[i][k] != grid[k][j]) { ok = 0; break; } } ans += ok; } } return ans; } }
python3 解法, 执行用时: 2292 ms, 内存消耗: 20.4 MB, 提交时间: 2023-06-06 09:23:39
class Solution: def equalPairs(self, grid: List[List[int]]) -> int: n = len(grid) ans = 0 for i in range(n): for j in range(n): ans += all(grid[i][k] == grid[k][j] for k in range(n)) return ans
python3 解法, 执行用时: 224 ms, 内存消耗: 20.5 MB, 提交时间: 2023-06-06 09:23:28
class Solution: def equalPairs(self, grid: List[List[int]]) -> int: g = [list(col) for col in zip(*grid)] return sum(row == col for row in grid for col in g)
python3 解法, 执行用时: 60 ms, 内存消耗: 18.5 MB, 提交时间: 2022-08-05 15:36:38
class Solution: def equalPairs(self, grid: List[List[int]]) -> int: # 用哈希表统计每行出现的次数,然后遍历列,累加哈希表中列出现的次数。 cnt = Counter(tuple(row) for row in grid) return sum(cnt[col] for col in zip(*grid))
python3 解法, 执行用时: 7912 ms, 内存消耗: 18.6 MB, 提交时间: 2022-08-05 15:33:50
class Solution: def equalPairs(self, grid: List[List[int]]) -> int: # 遍历每一行每一列,对比 from functools import reduce ans, n = 0, len(grid) for i in range(n): for j in range(n): if reduce(lambda x,y : x and y, [grid[i][k] == grid[k][j] for k in range(n)]): ans += 1 return ans