立志重刷代码随想录60天冲冲冲!!——第三十三天(补更)

62.不同路径

class Solution {
public:
    int uniquePaths(int m, int n) {
        // dp[i][j] 表示在这个位置共有多少种路径
        // dp[i][j] = dp[i-1][j] + dp[i][j-1]
        // dp[i][0] == dp[0][j] == 1

        vector<vector<int>> dp(m, vector<int>(n, 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];
    }
};

63. 不同路径 II

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        // dp[i][j]表示共有多少种路径
        // dp[i][j] = dp[i-1][j] + dp[i][j-1]

        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        vector<vector<int>> dp(m, vector<int>(n, 0));
        for (int i = 0; i < m; i++) {
            if (obstacleGrid[i][0] == 0) {
                dp[i][0] = 1;
            } else break;
        }
        for (int j = 0; j < n; j++) {
            if (obstacleGrid[0][j] == 0) {
                dp[0][j] = 1;
            } else break;
        }

        for (int i = 1; i < m; i++) {
            for (int j = 1; j < n; j++) {
                if (obstacleGrid[i][j] == 1) {
                    dp[i][j] = 0;
                    continue;
                }
                dp[i][j] = dp[i-1][j] + dp[i][j-1];
            }
        }
        return dp[m-1][n-1];
    }
};

全部评论

相关推荐

1.&nbsp;进程和线程的基本概念是什么?2.&nbsp;进程和线程之间有什么主要区别?3.&nbsp;进程和线程的优缺点分别是什么?4.&nbsp;什么时候选择使用进程,什么时候选择使用线程?5.&nbsp;多进程和多线程的同步与通信方法有哪些?6.&nbsp;进程的地址空间模型有哪些?7.&nbsp;进程和线程的状态转换图是什么样的?什么情况下会阻塞和就绪?8.&nbsp;父进程和子进程之间的关系和区别是什么?9.&nbsp;什么是进程上下文和中断上下文?10.&nbsp;一个进程可以创建多少线程?这个数量与什么有关?11.&nbsp;并发、同步、异步、互斥、阻塞和非阻塞的定义是什么?12.&nbsp;线程同步和互斥的具体实现方法有哪些?13.&nbsp;线程同步与阻塞之间的关系是什么?同步一定阻塞吗?阻塞一定同步吗?14.&nbsp;孤儿进程、僵尸进程和守护进程的概念是什么?15.&nbsp;如何创建守护进程?16.&nbsp;如何正确处理僵尸进程?17.&nbsp;C和C++之间的主要区别是什么?18.&nbsp;new和malloc的区别是什么?19.&nbsp;malloc的底层实现是怎样的?20.&nbsp;在1G内存的计算机中能否malloc(1.2G)?为什么?21.&nbsp;指针与引用的相同和区别是什么?如何相互转换?22.&nbsp;C语言检索内存情况的方式有哪些?内存分配的方式是什么?23.&nbsp;extern&nbsp;&amp;quot;C&amp;quot;的作用是什么?24.&nbsp;头文件声明时加extern,而在定义时不要加的原因是什么?25.&nbsp;函数参数压栈顺序是什么?关于__stdcall和__cdecl调用方式的理解是什么?26.&nbsp;重写memcpy()函数需要注意哪些问题?27.&nbsp;数组到底存放在哪里?28.&nbsp;struct和class的区别是什么?29.&nbsp;char和int之间的转换是怎样的?30.&nbsp;static的用法和定义是什么?31.&nbsp;const常量和#define的区别是什么?32.&nbsp;volatile的作用和用法是什么?33.&nbsp;为什么没有引用常量?34.&nbsp;C/C++中变量的作用域是什么?35.&nbsp;C++中类型转换机制有哪些?dynamic_cast转换失败时会出现什么情况?&nbsp;&nbsp;c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
查看35道真题和解析
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务