. - 力扣(LeetCode) import copy from typing import List class Solution: def modifiedMatrix(self, matrix: List[List[int]]) -> List[List[int]]: answer = copy.deepcopy(matrix) m, n = len(matrix), len(matrix[0]) # 构建长度为n,值为-1的数组 dp = [-1] * n # 构建一个数据结构,记录matrix中值为-1的位置 positions = [] for i in range(m): for j in range(n): if matrix[i][j] > dp[j]: dp[j] = matrix[i][j] if matrix[i][j] == -1: positions.append((i, j)) # 遍历positions,将matrix中值为-1的位置的值设置为dp[j] for i, j in positions: matrix[i][j] = dp[j] return matrix # 官方的解题思路 def modifiedMatrixOfficial(self, matrix: List[List[int]]) -> List[List[int]]: # 可以取得行与列,用列当第一层循环,行当第二层循环,然后用zd来记录当前列的最大值,然后遍历每一行,将当前列的最大值zd赋值给该列值为-1的元素,然后返回矩阵。 n, m = len(matrix), len(matrix[0]) for j in range(m): zd = -1 for i in range(n): zd = max(zd, matrix[i][j]) for i in range(n): if matrix[i][j] == -1: matrix[i][j] = zd return matrix # 我的扩展,将positions记录在一个列表中,然后遍历positions,将matrix中值为-1的位置的值设置为zd def modifiedMatrixMyExpand(self, matrix: List[List[int]]) -> List[List[int]]: n, m = len(matrix), len(matrix[0]) for j in range(m): zd = -1 positions = [] for i in range(n): zd = max(zd, matrix[i][j]) if matrix[i][j] == -1: positions.append((i, j)) for x, y in positions: matrix[x][y] = zd return matrix