2352. Equal Row and Column Pairs

Leetcode link

题目简介

/**
 * @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
};

results matching ""

    No results matching ""