1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| class Solution: def minFallingPathSum(self, matrix: List[List[int]]) -> int: n = len(matrix) if n == 1: return matrix[0][0]
f = [inf] + [0]*n + [inf] for i in range(n): pre = f[0] for j in range(n): pre, f[j+1] = f[j+1], min(pre, f[j+1], f[j+2]) + matrix[i][j] return min(f)
n = len(matrix) if n == 1: return matrix[0][0]
f = [[0]*n for _ in range(n+1)] for i in range(n): for j in range(n): if j == 0: f[i+1][j] = min(f[i][j], f[i][j+1]) + matrix[i][j] elif j == n-1: f[i+1][j] = min(f[i][j], f[i][j-1]) + matrix[i][j] else: f[i+1][j] = min(f[i][j], f[i][j-1], f[i][j+1]) + matrix[i][j] return min(f[-1])
|