leetcode-6125:相等行列对

简介: leetcode-6125:相等行列对

题目

题目连接

给你一个下标从 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]

解题

方法一:编码成string+哈希

将水平方向,编码成string

将竖直方向,编程成string,

比如对于:

{
{1,11},
{11,1}
}

水平方向,可以编码为"#1#11"和"#11#1"

竖直方向,可以编码为"#1#11"和"#11#1"

因此只要记录在map中记录每种string出现的次数,后续让水平方向的string和竖直方向的string是都出现个数相乘。

(编码成string比较方便,编译提供了对string的哈希函数,如果是vector作为map的key,还要自定义哈希,比较麻烦)

class Solution {
public:
    int equalPairs(vector<vector<int>>& grid) {
        int m=grid.size(),n=grid[0].size();
        unordered_map<string,int> map_row;
        unordered_map<string,int> map_col;
        string row_str,col_str;
        for(int i=0;i<m;i++){
            row_str.clear();
            for(int j=0;j<n;j++){
                row_str+="#"+to_string(grid[i][j]);
            }
            map_row[row_str]++;
        }
        for(int i=0;i<n;i++){
            col_str.clear();
            for(int j=0;j<m;j++){
                col_str+="#"+to_string(grid[j][i]);
            }
            map_col[col_str]++;
        }
        int res=0;
        for(auto& it:map_row){
            if(map_col.count(it.first)){
                res+=it.second*map_col[it.first];
            }
        }
        return res;
    }
};
相关文章
|
小程序 前端开发 JavaScript
微信小程序连接数据库与WXS的使用
微信小程序连接数据库与WXS的使用
281 0
|
网络安全
应用开发通过nfs来mount失败解决办法mount.nfs: Connection timed out
应用开发通过nfs来mount失败解决办法mount.nfs: Connection timed out
2373 0
执行apt-get install xxx 遇到无法定位软件包解决方法
执行apt-get install xxx 遇到无法定位软件包解决方法
4371 0
执行apt-get install xxx 遇到无法定位软件包解决方法
|
10月前
|
IDE 开发工具
【开发IDE升级】如何对IDEA版本进行升级
本文介绍了如何将 IntelliJ IDEA Ultimate 从 2020.2.2 版本升级到 2022.3.2 版本。主要内容包括准备工作、卸载旧版本和安装新版本的步骤。首先,从官网下载所需版本并备份旧版配置;接着,通过 Uninstall.exe 卸载旧版,保留配置和插件;最后,安装新版并完成激活。详细的操作步骤和截图帮助用户顺利完成升级过程。
11486 1
【开发IDE升级】如何对IDEA版本进行升级
|
11月前
|
SQL
LIKE
【11月更文挑战第05天】
166 2
|
消息中间件 Cloud Native 前端开发
记录丨阿里云校招生的成长经历
记录丨阿里云校招生的成长经历
记录丨阿里云校招生的成长经历
|
弹性计算 图形学
unity ECS简介
unity ECS简介
1620 0
|
缓存 PHP 开发工具
今天给大家说一下网络优化
今天给大家说一下网络优化
158 0
解决办法:gpg : 从公钥服务器接收失败:公钥服务器错误
解决办法:gpg : 从公钥服务器接收失败:公钥服务器错误
2455 0
|
算法 Java
Java练习题——流程控制语句(含力扣题库真题)
给你一个整数x,如果x是一个回文数,打印true,否则,返回false。(注:回文数是指正序和倒序读都是一样的整数。列如,121是回文数,1231不是)
461 0
Java练习题——流程控制语句(含力扣题库真题)