• 不同路径II


    题源:LeetCode

    链接:https://leetcode-cn.com/problems/unique-paths-ii/

    其实和上一个随笔中的不同路径一样,只是多了个障碍物,多了个判断的过程。

     1 class Solution {
     2 public:
     3     int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
     4         if(obstacleGrid.size() == 0) return 0;
     5         //define dp: dp[m][n]表示在位置[m][n]时到达右下角有dp[m][n]条路径
     6         int m = obstacleGrid.size();
     7         int n = obstacleGrid[0].size();
     8         if(obstacleGrid[m - 1][n - 1] == 1) return 0;
     9         vector<vector<long long>> dp(m, vector<long long>(n, 0));
    10         //base case 
    11         //这道题状态转移需要从最右下角开始,是确定状态base case
    12         for(int i = m - 1; i >= 0; i--){
    13             if(obstacleGrid[i][n - 1] == 1)
    14                 break;
    15             else
    16                 dp[i][n - 1] = 1;
    17         }
    18         for(int j = n - 1; j >= 0; j--){
    19             if(obstacleGrid[m - 1][j] == 1)
    20                 break;
    21             else
    22                 dp[m - 1][j] = 1;
    23         }
    24         //for循环遍历所有状态
    25         for(int i = m - 2; i >=0; i--){
    26             for(int j = n - 2; j >= 0; j--){
    27                 if(obstacleGrid[i][j] == 1)
    28                     dp[i][j] = 0;
    29                 else
    30                     dp[i][j] = dp[i + 1][j] + dp[i][j + 1];
    31             }
    32         }
    33         return dp[0][0];
    34 
    35 
    36     }
    37 };

    官方答案中使用到了滚动数组思想,节约了空间,后面会去学习一下用法。

  • 相关阅读:
    mysql查询缓存
    Mysql 通过binlog日志恢复数据
    mysqlbinlog命令详解
    修改vsftpd默认端口21
    centos 卸载vsftpd方法
    linux挂载u盘和卸载
    Linux下搭建FTP服务器
    fastjson SerializerFeature详解
    Spring JPA使用CriteriaBuilder动态构造查询
    jdk之jps的用法
  • 原文地址:https://www.cnblogs.com/hosheazhang/p/15114107.html
Copyright © 2020-2023  润新知