【leetcode】63. Unique Paths II

来源:互联网 发布:java 适配器模式详解 编辑:程序博客网 时间:2024/06/03 13:48

一、题目描述

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” 这道题的思想,不过设置了障碍之后,对于第一行和第一列要单独拿出来处理。用path[i][j] 表示到[i][j]位置的路径的条数,先判断[i][j]位置是否是障碍,即值是否是1,如果是障碍,那么path[i][j]=0,否则用状态转换方程path[i][j] = path[i-1][j] + path[i][j-1]


c++代码(3ms,26.70%)

class Solution {public:    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {        int m,n;         m = obstacleGrid.size();        n = obstacleGrid[0].size();        int i,j;        int path[m][n];        path[0][0] = obstacleGrid[0][0]==0?1:0;        for(i=1; i<n;i++){  //先处理第一行            if(obstacleGrid[0][i] == 1){                path[0][i]=0;            }else{                path[0][i] = path[0][i-1];            }        }        for(i=1;i<m;i++){  //处理第一列            if(obstacleGrid[i][0] == 1){                path[i][0] = 0;            }else{                path[i][0] = path[i-1][0];            }                    }                for(i=1;i<m;i++){            for(j=1;j<n;j++){                if(obstacleGrid[i][j] == 1){                    path[i][j]=0;                }else{                    path[i][j] = path[i-1][j] + path[i][j-1];                }            }        }                return path[m-1][n-1];    }};


c++代码2(3ms)

往外扩展一行一列,左上角位置从1,1开始。这样对于第一行第一列就不需要单独拿出来讨论了。

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




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝只吃水果不吃饭怎么办 一岁宝宝不喜欢吃水果怎么办 1岁宝宝不吃水果怎么办 一岁半宝宝吃水果拉肚子怎么办 大人发烧了怎么办如何退烧 怀孕后不爱吃水果怎么办 不敢吃水果了怕虫怎么办 宝宝发烧38度不出汗怎么办 1岁宝宝喜欢含饭怎么办 3岁宝宝喜欢含饭怎么办 孩子咳嗽发烧怎么办最有效 孩子咳嗽打哈切流鼻涕发烧怎么办 孩子香蕉吃多了怎么办 80多岁老人发烧怎么办 小孩香蕉吃多了怎么办 7个月宝宝缺钙怎么办 宝宝脖子被汗淹到红了脱皮怎么办? 小儿出汗多咳嗽怎么办吃什么 牛高烧不退怎么办最好 猪体温低不吃食怎么办 小孩发烧咳嗽怎么办吃什么药 大晚上发烧39度怎么办 胃受凉了老打嗝怎么办 大人发低烧怎么办如何退烧 吃了退热药不退热怎么办 猪持续高烧不退怎么办 猪感冒了不吃食怎么办 6岁儿童发烧38度怎么办 5岁儿童发烧38度怎么办 7岁儿童发烧38度怎么办 儿童发烧到38度怎么办 4岁儿童发烧38度怎么办 9岁儿童发烧38度怎么办 5儿童发烧38度怎么办 咳嗽了20多天怎么办 嘴角烂了怎么办涂什么药 感冒发烧到39度怎么办 6岁宝宝发烧头痛怎么办 生完孩子耻骨疼怎么办 顺产底下外阴红肿伤口流脓怎么办 产后便秘怎么办什么方法最有效