算法分析与设计丨第十六周丨LeetCode(20)——Unique Paths II(Medium)

来源:互联网 发布:c语言多个if else 编辑:程序博客网 时间:2024/06/06 15:44

题目描述:

Follow up for "Unique Paths":

Now consider if some obstacles are added to the grids. How many unique paths would there be?

An obstacle and empty space is marked as 1 and 0 respectively in the grid.

For example,

There is one obstacle in the middle of a 3x3 grid as illustrated below.

[  [0,0,0],  [0,1,0],  [0,0,0]]

The total number of unique paths is 2.

Note: m and n will be at most 100.

题目解析:

动态规划。最开始的时候想的太复杂了,各种边界条件设置,后来看了别人的博客,发现其实和Unique Paths的判定条件一样,所以说有的时候不能想的太复杂。



class Solution {public:    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {        int m = obstacleGrid.size();        int n = obstacleGrid[0].size();        vector<vector<int> > path(m,vector<int>(n,0));                for(int i = 0;i < m;++i)        {            for(int j = 0;j < n;j++)            {                if(obstacleGrid[i][j] == 1)                   path[i][j] = 0;                else if(i == 0 && j == 0)                    path[i][j] = 1;                else if(i == 0 && j > 0)                    path[i][j] = path[i][j-1];                else if(i > 0 && j == 0)                    path[i][j] = path[i-1][j];                else                    path[i][j] = path[i-1][j] + path[i][j-1];                        }        }                return path[m-1][n-1];            }};


阅读全文
0 0
原创粉丝点击