Minimum Falling Path Sum — Grid DP

Sanjeev SharmaSanjeev Sharma
1 min read

Advertisement

Problem

Choose one element from each row such that adjacent elements differ by at most one column. Minimize sum.


Solutions

Python

class Solution:
    def minFallingPathSum(self, matrix: list[list[int]]) -> int:
        n=len(matrix)
        for i in range(1,n):
            for j in range(n):
                best=matrix[i-1][j]
                if j>0: best=min(best,matrix[i-1][j-1])
                if j<n-1: best=min(best,matrix[i-1][j+1])
                matrix[i][j]+=best
        return min(matrix[-1])

C++

class Solution {
public:
    int minFallingPathSum(vector<vector<int>>& m){
        int n=m.size();
        for(int i=1;i<n;i++) for(int j=0;j<n;j++){
            int best=m[i-1][j];
            if(j>0) best=min(best,m[i-1][j-1]);
            if(j<n-1) best=min(best,m[i-1][j+1]);
            m[i][j]+=best;
        }
        return *min_element(m.back().begin(),m.back().end());
    }
};

Complexity

  • Time: O(n²) | Space: O(1) in-place

Advertisement

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro