2133. Check if Every Row and Column Contains All Numbers - cocoder39/coco39_LC GitHub Wiki

2133. Check if Every Row and Column Contains All Numbers

Optimal solution:

class Solution:
    def checkValid(self, matrix: List[List[int]]) -> bool:
        n = len(matrix)

        for i in range(n):
            row, col = set(), set()
            for j in range(n):
                if matrix[i][j] in row or matrix[j][i] in col: # check both row[i] and col[i]
                    return False
                row.add(matrix[i][j])
                col.add(matrix[j][i])
            if len(row) != n or len(col) != n:
                return False            
        return True

suboptimal solution

class Solution:
    def checkValid(self, matrix: List[List[int]]) -> bool:
        n = len(matrix)
        rows = [set() for _ in range(n)]
        cols = [set() for _ in range(n)]

        for i in range(n):
            for j in range(n):
                if matrix[i][j] in rows[i] or matrix[i][j] in cols[j]:
                    return False
                rows[i].add(matrix[i][j])
                cols[j].add(matrix[i][j])

        for i in range(n):
            if len(rows[i]) != n or len(cols[i]) != n:
                return False
        return True