Giả sử chúng ta có một ma trận 2D gồm các số, bây giờ với mỗi số 0 trong ma trận đã cho và thay thế tất cả các giá trị trong hàng và cột của nó bằng 0 và trả về ma trận cuối cùng.
Vì vậy, nếu đầu vào giống như ma trận, thì đầu ra sẽ là ma trận như các hàng thứ 0, thứ 2 và thứ 3 chứa 0 và ma trận cuối cùng chứa 0 trong các hàng đó. Tương tự, các cột thứ 0, 1 và 2 chứa 0 và ma trận cuối cùng chứa 0 trong các cột đó.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau:
n := row count, m := column count res := make a matrix of size n x m and fill with 0 transpose := transpose given matrix for each row i, do if 0 not in matrix[i], then for each column j in matrix, do if 0 not in transpose[j], then res[i, j] := matrix[i, j] return res
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, matrix): n, m = len(matrix), len(matrix[0]) res = [[0 for __ in range(m)] for _ in range(n)] transpose = [list(row) for row in zip(*matrix)] for i in range(n): if 0 not in matrix[i]: for j in range(m): if 0 not in transpose[j]: res[i][j] = matrix[i][j] return res ob = Solution() matrix = [ [6, 0, 0, 6, 9], [4, 9, 9, 4, 8], [0, 8, 3, 4, 2], [9, 0, 7, 8, 3], [5, 2, 9, 6, 8] ] print(ob.solve(matrix))
Đầu vào
matrix = [ [6, 0, 0, 6, 9], [4, 9, 9, 4, 8], [0, 8, 3, 4, 2], [9, 0, 7, 8, 3], [5, 2, 9, 6, 8] ]
Đầu ra
[[0, 0, 0, 0, 0], [0, 0, 0, 4, 8], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 6, 8]]