2352. Equal Row and Column Pairs
题目简介
/**
* @param {number[][]} grid
* @return {number}
*/
题目给我们一个 n*n 的数字数组
要求我们找到所有的 (row, col) 使得该位置的行跟列有相同的元素与排列
最后返回符合条件的 (row, col) 的个数
解题思路
这题暴力解法的话我们需要遍历 n*n 个格子的基础上,再找每个格子的行与列来比较
换个角度想,我们只需要找到列跟行相同的组合,该组合必定会对应到一个 (row, col) 格子
所以我们可以先用 map 来保存行或者列的所有排列出现的次数
然后我们再遍历剩余的列或者行,找出有相同排列的数量记录下来
最后返回我们记录的数量即可
Javascript
/**
* @param {number[][]} grid
* @return {number}
*/
var equalPairs = function (grid) {
let res = 0
const len = grid.length
const rowMap = new Map()
for (const row of grid) {
const key = JSON.stringify(row)
rowMap.set(key, (rowMap.get(key) || 0) + 1)
}
for (let i = 0; i < len; i++) {
const col = []
for (let j = 0; j < len; j++) {
col.push(grid[j][i])
}
const key = JSON.stringify(col)
if(rowMap.has(key)) {
res += rowMap.get(key)
}
}
return res
};