zoukankan      html  css  js  c++  java
  • []leetcode]Unique Paths II

    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]
    ]

    题目大意
    寻求最短路径,从左上走到右下,保证每次只能往左走或往下走(不可以斜着走)。其中数字1是障碍,表示“此路不通”,求总共的路线数


    思路
       1. 如果没有障碍

    val[i][0] = 1
    val[0][j] = 1
    val[i][j] = val[i-1][j] + val[i][j-1]

    2. 有了障碍后
    如果obstacle[i][j] = 1
    val[i][j] = 1
    否则
    tmp = obstacle[i-1][j] == 1 ? 0 : val[i-1][j]
    tmp = obstacle[i][j-1] == 1 ? tmp : tmp + val[i-1][j-1]
       val[i][j] = tmp

    参考代码
    class Solution {
    public:
        int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) {
            int row = obstacleGrid.size();
            int col = obstacleGrid[0].size();
            int token = 1;
            int val[row][col];
            for (int j = 0; j < col; ++j)
            {
                if(obstacleGrid[0][j] == 1)
                    token = 0;
                val[0][j] = token;
                
            }
            token = 1;
            for (int i = 0; i < row; ++i)
            {
                if(obstacleGrid[i][0] == 1)
                    token = 0;
                val[i][0] = token;
            }
            for (int i = 1; i < row; ++i)
            {
                for(int j = 1; j < col; ++j)
                {
                    if (obstacleGrid[i][j] == 1)
                        val[i][j] = 0;
                    else
                    {
                        int tmp = obstacleGrid[i-1][j] == 1 ? 0 :val[i-1][j];
                        tmp = obstacleGrid[i][j-1] == 1 ? tmp : tmp + val[i][j-1];
                        val[i][j] = tmp;
                    }
                }
            }
            return val[row-1][col-1];
        }
    };



  • 相关阅读:
    一个给照片换底色的牛逼网站
    如何写好ppt
    当你迷茫时,就来看看这个视频!
    IPV6地址检测
    性能测试流程
    pycharm中无法以pytest运行
    Mac charles配置完成后无法上网
    Mac Mysql安装过程的各种坑
    python常用模块之——正则re模块
    Jmeter参数化真香
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3806896.html
Copyright © 2011-2022 走看看