2352. Equal Row and Column Pairs

練習日期:2026-02-01

難度:Medium

類型:Array、Hash Table、Matrix、Simulation

📘 題目敘述

給你一個 n x n 的整數矩陣 grid

如果某一列(row)與某一行(column)完全相同(也就是每個位置的數值都一樣),則稱這一對 (row, column) 是一個 相等對(equal pair)

請回傳 grid 中相等的 (row, column) 對的數量。

條件限制

  • 1 <= n <= 200
  • 1 <= grid[i][j] <= 10^5

🧠 解題思路

我的做法是最直觀的 暴力比對

  • 枚舉每一列 i
  • 枚舉每一行 j
  • 逐格檢查這一列 i 的第 k 個元素 grid[i][k] 是否等於這一行 j 的第 k 個元素 grid[k][j]

只要整個 k = 0..n-1 都相同,代表:

  • i 列 = 第 j
  • count++

所有變數

  • count:最後要回傳的相等 (row, column) 對數量
  • i:目前選到的 row 編號
  • j:目前選到的 column 編號
  • k:用來逐格比對 row 與 column 的索引
  • check:判斷「目前這組 (i, j) 是否完全相等」的旗標
    • 只要某格不相等就設成 falsebreak

🪜 主要流程步驟

1. 枚舉所有 row 和 column 的配對

  • 外層 i:跑過所有 row
  • 中層 j:對固定的 row,跑過所有 column
  • 這樣就會把所有 (i, j) 都檢查一遍

2. 對固定的 (i, j) 做逐格比對

  • 先把 check = true,假設它們相等
  • k0..n-1 檢查:
  • grid[i][k](row i 的第 k 格)
  • grid[k][j](column j 的第 k 格)
  • 只要出現任何一格不同:
  • check = false
  • break(這對不用再比了)

3. 若整條都相等就計數

  • k 比對完都沒出錯 → check 仍是 true
  • 代表 row i 與 column j 完全相同
  • count++

💻 程式碼實作

class Solution {
public:
    int equalPairs(vector<vector<int>>& grid) {
        int count = 0;
        for (int i = 0; i < grid.size(); i++) {
            bool check = true;
            for (int j = 0; j < grid.size(); j++) {
                check = true;
                for (int k = 0; k < grid.size(); k++) {
                    if (grid[i][k] != grid[k][j]) {
                        check = false;
                        break;
                    }
                }
                if (check) {
                    count++;
                }
            }
        }
        return count;
    }
};

https://leetcode.com/problems/equal-row-and-column-pairs/

作者: scottnick
撰寫日期: 2026-02-01
類別:
原文連結: https://scottnick.github.io/cpp-notes/all%20problems/2352-equal-row-and-column-pairs.html