返回介绍

solution / 2300-2399 / 2352.Equal Row and Column Pairs / README

发布于 2024-06-17 01:03:07 字数 3624 浏览 0 评论 0 收藏 0

2352. 相等行列对

English Version

题目描述

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

解法

方法一:模拟

我们直接将矩阵 $grid$ 的每一行和每一列进行比较,如果相等,那么就是一对相等行列对,答案加一。

时间复杂度 $O(n^3)$,其中 $n$ 为矩阵 $grid$ 的行数或列数。空间复杂度 $O(1)$。

class Solution:
  def equalPairs(self, grid: List[List[int]]) -> int:
    n = len(grid)
    ans = 0
    for i in range(n):
      for j in range(n):
        ans += all(grid[i][k] == grid[k][j] for k in range(n))
    return ans
class Solution {
  public int equalPairs(int[][] grid) {
    int n = grid.length;
    int ans = 0;
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
        int ok = 1;
        for (int k = 0; k < n; ++k) {
          if (grid[i][k] != grid[k][j]) {
            ok = 0;
            break;
          }
        }
        ans += ok;
      }
    }
    return ans;
  }
}
class Solution {
public:
  int equalPairs(vector<vector<int>>& grid) {
    int n = grid.size();
    int ans = 0;
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < n; ++j) {
        int ok = 1;
        for (int k = 0; k < n; ++k) {
          if (grid[i][k] != grid[k][j]) {
            ok = 0;
            break;
          }
        }
        ans += ok;
      }
    }
    return ans;
  }
};
func equalPairs(grid [][]int) (ans int) {
  for i := range grid {
    for j := range grid {
      ok := 1
      for k := range grid {
        if grid[i][k] != grid[k][j] {
          ok = 0
          break
        }
      }
      ans += ok
    }
  }
  return
}
function equalPairs(grid: number[][]): number {
  const n = grid.length;
  let ans = 0;
  for (let i = 0; i < n; ++i) {
    for (let j = 0; j < n; ++j) {
      let ok = 1;
      for (let k = 0; k < n; ++k) {
        if (grid[i][k] !== grid[k][j]) {
          ok = 0;
          break;
        }
      }
      ans += ok;
    }
  }
  return ans;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文