Medium
,Array
,Hash Table
,Matrix
,Simulation
2352. Equal Row and Column Pairs
Given a 0-indexed n x n
integer matrix grid
, return the number of pairs (ri, cj)
such that row ri
and column cj
are equal.
A row and column pair is considered equal if they contain the same elements in the same order (i.e., an equal array).
Example 1:
Input: grid = [[3,2,1],[1,7,6],[2,7,7]]
Output: 1
Explanation: There is 1 equal row and column pair:
- (Row 2, Column 1): [2,7,7]
Example 2:
Input: grid = [[3,1,2,2],[1,4,4,5],[2,4,2,2],[2,4,2,2]]
Output: 3
Explanation: There are 3 equal row and column pairs:
- (Row 0, Column 0): [3,1,2,2]
- (Row 2, Column 2): [2,4,2,2]
- (Row 3, Column 2): [2,4,2,2]
Constraints:
grid[i][j]
<= 105
class Solution:
def equalPairs(self, grid: List[List[int]]) -> int:
d = defaultdict(int)
ans = 0
for row in grid:
d[str(row)] += 1
for col in map(list, zip(*grid)):
ans += d[str(col)]
return ans
Yen-Chi ChenWed, Jun 14, 2023
function equalPairs(grid: number[][]): number {
const n = grid.length;
const rows = new Map<string, number>();
const cols = new Map<string, number>();
for (let i = 0; i < n; i++) {
const row = grid[i].join(',');
const col = grid.map((row) => row[i]).join(',');
rows.set(row, (rows.get(row) || 0) + 1);
cols.set(col, (cols.get(col) || 0) + 1);
}
let count = 0;
for (const [key, value] of rows.entries()) {
count += value * (cols.get(key) || 0);
}
return count;
}
SheepWed, Jun 14, 2023
public class Solution {
public int EqualPairs(int[][] grid) {
int n = grid.Length;
var dic = new Dictionary<string, int>();
for (int i = 0; i < n; i++) {
string key = string.Join('-', grid[i]);
dic.TryGetValue(key, out int count);
dic[key] = count + 1;
}
int total = 0;
for (int j = 0; j < n; j++) {
string key = string.Join('-', grid.Select(row => row[j]));
if (dic.TryGetValue(key, out int count)) {
total += count;
}
}
return total;
}
}
JimJun 14, 2023