Minimum Falling Path Sum II LeetCode solution in Python
1class Solution:2def minFallingPathSum(self, grid: List[List[int]]) -> int:3m, n = len(grid), len(grid[0])4if m == 1 and n == 1:5return grid[0][0]6min_arr = [0 for _ in range(n)]7for i in range(m):8prefix = [float("inf") for _ in range(n)]9suffix = [float("inf") for _ in range(n)]10current_row = [elem1 + elem2 for elem1, elem2 in zip(grid[i], min_arr)]11for i in range(1, n):12prefix[i] = min(prefix[i - 1], current_row[i - 1])13for i in range(n - 2, -1, -1):14suffix[i] = min(suffix[i + 1], current_row[i + 1])15min_arr = [min(pre, suff) for pre, suff in zip(prefix, suffix)]16return min(min_arr)