首页 > 其他分享 >day39

day39

时间:2023-02-22 23:47:21浏览次数:28  
标签:遍历 day39 int obstacleGrid 数组 dp row

1、leetcode62 不同路径

  1. 步骤

    1. 确定dp数组(dp table)以及下标的含义
      • dp[i] [j] : 从(0,0)到(i,j)的路径数量
    2. 确定递推公式
      • (i,j) 可由 (i-1,j)、(i,j-1)到达【已知:每次只能向下或者向右移动一步】
      • dp[i] [j] = dp[i-1] [j] + dp[i] [j-1]
    3. dp数组如何初始化
      • 已知:每次只能向下或者向右移动一步
        • dp[i] [0] = 1
        • dp[0] [j] = 1
    4. 确定遍历顺序
      • 一层一层,从前向后遍历
    5. 举例推导dp数组
  2. 代码

    class Solution {
        public int uniquePaths(int m, int n) {
            int[][] dp = new int[m][n];
    
            for (int i = 0; i < m; i++) dp[i][0] = 1;
            for (int j = 0; j < n; j++) dp[0][j] = 1;
    
            for(int i=1; i<m; i++) {
                for(int j=1; j<n; j++) {
                    dp[i][j] = dp[i-1][j] + dp[i][j-1];
                }
            }
    
            return dp[m-1][n-1];
        }
    }
    

2、leetcode63 不同路径Ⅱ

  1. 步骤

    1. 确定dp数组(dp table)以及下标的含义

      • dp[i] [j] : 从(0,0)到(i,j)的路径数量
    2. 确定递推公式

      • (i,j) 可由 (i-1,j)、(i,j-1)到达【已知:每次只能向下或者向右移动一步】【前提是(i,j)可达】

      • if(obstacleGrid[i][j] == 0){
        	dp[i] [j] = dp[i-1] [j] + dp[i] [j-1]
        }
        
    3. dp数组如何初始化

      • 已知:每次只能向下或者向右移动一步 【且该点可达】

        • for(int i=0; i<row && obstacleGrid[i][0] == 0; i++){
          	dp[i][0] = 1;
          }
          for(int j=0; i<col && obstacleGrid[0][j] == 0; j++){
          	dp[0][j] = 1;
          }
          
    4. 确定遍历顺序

      • 一层一层,从前向后遍历
    5. 举例推导dp数组

  2. 代码

    class Solution {
        public int uniquePathsWithObstacles(int[][] obstacleGrid) {
            int row = obstacleGrid.length;
            int col = obstacleGrid[0].length;
    
            int[][] dp = new int[row][col];
    
            if (obstacleGrid[row - 1][col - 1] == 1 || obstacleGrid[0][0] == 1) {
                 return 0;
            }
    
            for(int i=0; i<row && obstacleGrid[i][0] == 0; i++) dp[i][0] = 1; 
            for(int j=0; j<col && obstacleGrid[0][j] == 0; j++) dp[0][j] = 1;
    
            for(int i=1; i<row; i++) {
                for(int j=1; j<col; j++) {
                    if(obstacleGrid[i][j] == 1) {
                        continue;
                    }
                    dp[i][j] = dp[i-1][j] + dp[i][j-1];
                }
            }
    
            return dp[row-1][col-1];
        }
    }
    

标签:遍历,day39,int,obstacleGrid,数组,dp,row
From: https://www.cnblogs.com/hzj-bolg/p/17146414.html

相关文章

  • 【算法训练营day39】LeetCode62. 不同路径 LeetCode63. 不同路径II
    LeetCode62.不同路径题目链接:62.不同路径独上高楼,望尽天涯路第一次接触二维的dp数组,初始化会麻烦一点,dp数组表示的是机器人移动到第i行第j列格子的所有路径数。class......
  • day39_0098.验证二叉搜索树
    0098.验证二叉搜索树classSolution{public:boolisValidBST(TreeNode*root){if(root==NULL)returnfalse;if(root->left){......
  • 代码随想录Day39
    LeetCode669.修建二叉搜索树给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L,R]中(R>=L)。你可能需要改变树的根节点,......
  • day39-jquery
    初始jquery导入jquery:外部链接导入:<scriptsrc="http://libs.baidu.com/jqueryui/1.8.22/jquery-ui.min.js"></script> 下载jquery包 <scriptsrc="lib/jquer......
  • 进入python的世界_day39_数据库——编辑表的补充、SQL数据查询语句
    一、编辑表的SQL语句补充altertable旧表名rename新表名;——改表名altertable表名change旧字段新字段新字段数据类型;——改字段altertable表名add新字......
  • day39并发编程
    多进程实现TCP服务端并发importsocketfrommultiprocessingimportProcessdefget_server():server=socket.socket()server.bind(('127.0.0.1',8080))......
  • 前端Node.js-Day39
    Session认证的局限性:Session认证机制需要配合Cookie才能实现。由于Cookie默认不支持跨域访问,所以,当涉及到前端跨域请求后端接口的时候,需要做很多额外的配置,才能实......