ZhongKuo0228 / study

0 stars 0 forks source link

2352. Equal Row and Column Pairs? #81

Open fockspaces opened 10 months ago

fockspaces commented 10 months ago
  1. 用字串比對,減少 iterate
  2. 存 row, col 組合
class Solution:
    def equalPairs(self, grid: List[List[int]]) -> int:
        n, ans = len(grid), 0
        str_rows = [",".join([str(num) for num in row]) for row in grid]
        str_cols = [",".join([str(grid[row][col]) for row in range(n)]) for col in range(n)]
        for row in str_rows:
            for col in str_cols:
                if row == col:
                    ans += 1
        return ans
fockspaces commented 10 months ago

GPT improve:

  1. 用 tuple 就可以做 hash
  2. 用 list.count 直接計算出重複相同 match 次數
class Solution:
    def equalPairs(self, grid: List[List[int]]) -> int:
        n, pair_counts = len(grid), 0
        row_hashes = [hash(tuple(row)) for row in grid]
        col_hashes = [hash(tuple(grid[row][col] for row in range(n))) for col in range(n)]
        for row_hash in row_hashes:
            pair_counts += col_hashes.count(row_hash)
        return pair_counts