• 【Java|golang】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

    public int equalPairs(int[][] grid) {
            Map<String, Integer> row = new HashMap<>();
            Map<String, Integer> col = new HashMap<>();
            for (int i = 0; i < grid.length; i++) {
                StringBuilder rowsb = new StringBuilder();
                StringBuilder colsb = new StringBuilder();
                for (int j = 0; j < grid[0].length; j++) {
                    rowsb.append(grid[i][j]).append(" ");
                    colsb.append(grid[j][i]).append(" ");
                }
                String rows = rowsb.toString();
                row.put(rows,row.getOrDefault(rows,0)+1);
                String cols = colsb.toString();
                col.put(cols,col.getOrDefault(cols,0)+1);
            }
            int sum=0;
            for (String s : row.keySet()) {
                sum+=row.get(s)*col.getOrDefault(s,0);
            }
            return sum;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    func equalPairs(grid [][]int) int {
    	row := make(map[string]int, 0)
    	col := make(map[string]int, 0)
    	for i, v := range grid {
    		rowsb := make([]string, 0)
    		colsb := make([]string, 0)
    		for j,_ := range v {
    			rowsb = append(rowsb,string(grid[i][j]))
    			colsb = append(colsb,string(grid[j][i]))
    		}
    		rows := strings.Join(rowsb, " ")
    		cols := strings.Join(colsb, " ")
    		row[rows]++
    		col[cols]++
    	}
    	sum:=0
    	for k, v := range row {
    		temp,ok:=col[k]
    		if ok{
    			sum+=v*temp
    		}
    	}
    	return sum
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    在这里插入图片描述

  • 相关阅读:
    Java--静态变量
    java读取配置文件工具类
    Java面向对象(高级)-- 类中属性赋值的位置及过程
    基于形状的匹配提纲
    GBase 8s gcadmin之distribution命令解析
    FLASH存储器又称闪存,主要有两种:NorFlash和NandFlash、linux系统flash分区注意事项及制作脚本
    VMware Workstation中安装FusionCompute 6.5.1_CNA
    MEM 英语备考第一篇
    【数据结构】图(Graph)
    新概念英语(第二册)复习——Lesson 16 - Lesson20
  • 原文地址:https://blog.csdn.net/qq_44461217/article/details/126016828