leetcode: Minimum Path Sum

来源:互联网 发布:ubuntu 安装qt 编辑:程序博客网 时间:2024/05/29 19:46

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

Note: You can only move either down or right at any point in time

采用dp的方法,空间复杂度:O(1)

时间复杂度:O(n*n)

int min(int x, int y)    {        return x<y?x:y;    }    int minPathSum(vector<vector<int>>& grid) {        if(grid.size()==0)            return 0;        int m=grid.size();        int n=grid[0].size();        int sum=0;                for(int i=0; i<m; i++)        {            grid[i][0]=grid[i][0]+sum;            sum=grid[i][0];        }                sum=0;        for(int j=0; j<n; j++)        {            grid[0][j]=grid[0][j]+sum;            sum=grid[0][j];        }                for(int i=1; i<m; i++)        {            for(int j=1; j<n; j++)            {                grid[i][j] = min(grid[i-1][j],grid[i][j-1]) + grid[i][j];            }        }        return grid[m-1][n-1];    }




0 0