代码随想录Day39 | 62.不同路径 63. 不同路径 II

从零搭建企业级AI网关:基于LiteLLM的安全防护体系设计 本文详细介绍了如何从零搭建企业级AI网关,基于LiteLLM构建全面的安全防护体系。内容涵盖分层防御架构、敏感数据处理、合规性配置与审计追踪,以及生产环境部署策略,助力企业安全高效地集成LLM技术,确保数据安全和合规性。 阅读详情

代码随想录Day39 | 62.不同路径 63. 不同路径 II

62.不同路径

文档讲解:代码随想录
视频讲解: 动态规划中如何初始化很重要!| LeetCode:62.不同路径
状态

  1. dp数组
    二维dp数组,dp[i][j]表示(i,j)这个格子的路径数
  2. 初始化
    对于第一行和第一列的所有格子路径数都是1。
for()
{
	dp[0][i] = 1
	dp[j][0] = 1;
}
  1. 递推公式
    (i,j)这个格子可以由(i-1,j)或者(i,j-1)这两个格子达到,所以
dp[i][j] = dp[i-1][j] + dp[i][j-1];
  1. 遍历方式
    从左上角开始到右下角
  2. 打印dp数组
class Solution {
public:
    int uniquePaths(int m, int n) {
        vector<vector<int>> dp(m,vector<int> (n));
        //初始化对于第一列或者第一行,只有一种路径
        for(int i =0;i<n;i++)
        {
            dp[0][i] = 1;
        }
        for(int i = 0;i<m;i++)
        {
            dp[i][0] = 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

文档讲解:代码随想录
视频讲解: 动态规划,这次遇到障碍了| LeetCode:63. 不同路径 II
状态

  1. dp数组
    dp[i][j]表示(i,j)位置的路径数
  2. 递推公式
    如果当前位置(i,j)没有障碍物,那么dp[i][j] = dp[i-1][j]+dp[i][j-1],如果是障碍物那么dp[i][j] = 0;
  3. 初始化
    同样对于第一行和第一列,但如果有障碍物,那么障碍物及其之后的格子路径都为0
  4. 遍历顺序
    仍然从左上角到右下角
  5. 打印dp数组
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        vector<vector<int>> dp(m,vector<int>(n));
        //初始化
        for(int i = 0;i<m;i++)
        {
            if(obstacleGrid[i][0] == 1)
            {
                for(int j = i;j<m;j++)
                {
                    dp[j][0] = 0;
                }
                break;
            }
            dp[i][0] = 1;
        }
        for(int i = 0;i<n;i++)
        {
            if(obstacleGrid[0][i] == 1)
            {
                for(int j = i;j<n;j++)
                {
                    dp[0][j] = 0;
                }
                break;
            }
            dp[0][i] = 1;
        }
        //遍历
        for(int i = 1;i<m;i++)
        {
            for(int j = 1;j<n;j++)
            {
                if(obstacleGrid[i][j] == 1)
                {
                    dp[i][j] == 0;
                }
                else
                {
                    dp[i][j] = dp[i-1][j] + dp[i][j-1];
                }
            }
        }
        return dp[m-1][n-1];
    }
};
《计算机视觉:从入门到精通》技术手册 第1章 计算机视觉概述与历史演进 视觉感知与机器视觉在工程实践中常被混用,但二者存在本质差异。视觉感知强调对光学信号的语义理解与场景解释,核心在于从二维投影重建三维世界的物理与语义属性。该领域关注遮挡处理、光照变化、材质反射等复杂因素的建模,其目标是实现类似人类视觉系统的场景理解能力。机器视觉则侧重于工业场景中的精密测量与控制,通常基于结构化光源、已知几何约束与标定参数,执行边缘检测、尺寸测量、位置定位等任务。前者面向开放环境的通用理解,后者面向受控环境的精确执行。 阅读详情

相关推荐

STM32F407用FSMC+DMA驱动LVGL,3.5寸屏流畅度翻倍实战(附CubeMX配置避坑)

本文详细介绍了如何在STM32F407上通过FSMC+DMA驱动LVGL,显著提升3.5寸屏的显示流畅度。从FSMC与DMA的配置原理到LVGL驱动层适配,提供了完整的优化方案和实测数据,帮助开发者解决界面卡顿问题,实现流畅度翻倍的效果。

weixin_30872499的博客 559

【代码随想录算法训练营Day39】62.不同路径;63. 不同路径 II

今天开始逐渐有 dp的感觉了,题目不多,就两个 不同路径,可以好好研究一下。遇到障碍之后可以不初始化,没赋值默认为0。起始有障碍or终止有障碍直接返回0。可以在for循环中间添加条件。

Tammy2001的博客 1232

告别Vysor!用Scrcpy在Mac上无线投屏安卓手机(附魅族16th闪退修复实战)

本文详细介绍了如何在Mac上配置和使用开源投屏工具Scrcpy,实现安卓手机无线投屏的高效解决方案。从基础环境准备到高级功能调优,包括无线连接配置、输入控制增强、多设备管理和性能优化等实用技巧,特别针对魅族16th等机型的闪退问题提供了修复方案,帮助用户彻底告别Vysor等商业软件。

weixin_28712661的博客 394

代码随想录day39|62.不同路径|63. 不同路径 II |Golang

笔记

weixin_42161901的博客 462

Zephyr RTOS线程间通讯实战:消息队列与信号量的5个经典应用场景

本文深入探讨了Zephyr RTOS中线程间通讯的核心机制,通过消息队列与信号量的组合,详细解析了传感器数据处理流水线、命令分发系统、日志记录、资源池管理以及周期性任务协同调度等5个经典应用场景。这些实战模式为构建高效、稳定且可维护的嵌入式多线程系统提供了清晰的设计蓝图和代码范例。

tomato的博客 94

警惕!数字签名伪造的攻防演练:用SigThief克隆证书的真实测试(Windows环境)

本文深入探讨了Windows环境下数字签名伪造的攻防技术,详细介绍了使用SigThief工具进行签名提取与克隆的实战步骤。通过真实测试案例,揭示了数字签名安全机制的潜在漏洞,并提供了有效的防御策略和检测技术,帮助安全人员提升系统防护能力。

weixin_42530732的博客 408

零基础代码随想录【Day39】|| 62.不同路径 ,63. 不同路径 II

这里要看一下递推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1],dp[i][j]都是从其上方和左方推导而来,那么从左到右一层一层遍历就可以了。那么很自然,dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因为dp[i][j]只有这两个方向过来。这样就可以保证推导dp[i][j]的时候,dp[i - 1][j] 和 dp[i][j - 1]一定是有数值的。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

Andrew______的博客 1217

机器人学习-matlab四足机器人控制仿真

《机器人学,机器视觉与控制》学习笔记 使用工具箱版本9.10 题目与解决思路: 【1】. 通过减少复位期间的抬腿高度来缩短复位的轨迹 Z轴向下,为了减小复位器件的抬腿高度,应当缩小△Z,故可以将示例程序中zu值调大。 【2】. 增加腿的步幅 腿的步幅可由改变x方向上腿前进和后退运动的极限来达到,令xf = 7; xb = -xf;即可。 ...

weixin_44609769的博客 5538

代码随想录Day39 | 62.不同路径、63.不同路径II

62.不同路径、63.不同路径II

weixin_46620779的博客 904

Python的单元测试之unittest

是一个功能类似 unittest 的库,它集合众家标准测试库之所长,和 unittest 相比,功能更为强大,使用更为简单,OpenStack 广泛的利用它编写单元测试。unittest 提供了自动匹配发现并执行测试用例的功能,随着项目代码结构越发庞大,势必有多个测试文件,自动匹配发现并测试用例的功能在此就显得非常有用,只要满足。unittest 提供了丰富的命令行入口,可以根据需要执行某些特定的用例。的测试用例都会被 unittest 发现并执行,测试用例文件的默认匹配规则为 test*.py。

1、测试博主技术知识分享 2、pos行业知识技术分享 3、java后端技术知识分享 4、嵌入式技术知识分享 5、运维部署相关知识分享 282

YOLOv9改进,YOLOv9添加CBAM注意力机制

CBAM是一个简单而有效的注意力模块,用于前馈卷积神经网络。给定一个中间特征图,我们的模块按顺序推断两个独立维度(通道和空间)的注意力图,然后将注意力图乘以输入特征图以进行自适应特征细化。由于 CBAM 是一个轻量级的通用模块,因此它可以无缝集成到任何 CNN 架构中,开销可以忽略不计,并且可以与基础 CNN 一起进行端到端训练。论文链接:(CBAM论文)

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 856

代码随想录刷题Day39 | 62.不同路径、63.不同路径 II

【代码】代码随想录刷题Day39 | 62.不同路径、63.不同路径 II。

weixin_45744752的博客 203

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲到使用WidgetComponent和3DUI进行交互。然而,这种方法存在一个问题:为了让射线可视化,我们需要勾选“调试/显示调试”,这样才能在手柄上看到代表其指向的一条红色射线。但最关键的问题是,这个显示调试信息的功能只属于Debug调试模式,也就是说,一旦将项目正式打包发布,这条射线辅助线就没有了。如下图所示:我就觉得Unreal官方真的是有点过分了,这不应该是最基本的功能么?难道我们VR要在Debug模式下发布?

TxNet 1612

代码随想录算法训练营三刷day39 |动态规划 之 62.不同路径 63. 不同路径II

因为从(0, 0)的位置到(i, 0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。表示啥,是从(0, 0)的位置到(i - 1, j)有几条路径,dp[i][j - 1]同理。一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。:表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。,因为dp[i][j]只有这两个方向过来。

baimaozi_007的博客 1378

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

代码随想录算法训练营第day39|62.不同路径 、 63. 不同路径 II

这里要看一下递推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1],dp[i][j]都是从其上方和左方推导而来,那么从左到右一层一层遍历就可以了。那么很自然,dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因为dp[i][j]只有这两个方向过来。这样就可以保证推导dp[i][j]的时候,dp[i - 1][j] 和 dp[i][j - 1]一定是有数值的。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

qq_60513199的博客 1739

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

代码随想录算法训练营day39|62.不同路径、63. 不同路径 II

62.不同路径动态规划五部曲:1.确定dp[i][j]的含义:从(0,0)走到(i,j)的所有路径数2.确定递推公式:dp[i][j] = dp[i][j-1]+dp[i-1][j]3.dp数组如何初始化:dp[0][j]=1,dp[i][0]=1 (第一行无法从上往下走到,不能从转移方程里推导出来,所以必须初始化,第一列也是一样的。

weixin_64883584的博客 529

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

代码随想录算法训练营DAY39|C++动态规划Part.2|62.不同路径、63.不同路径II

如果我们不把最上面一行和最左面一列的位置进行初始化 ,其他格子的路径和是无法推导的。给定的题目是二维的一个地图,所以我们的dp数组肯定也得是一个二维的。本题其实可以用深度优先搜索,但是那会超时。但是一定要注意障碍物在初始化边上的情况。同上[62.不同路径](# dp含义)同上[62.不同路径](# 递推公式)与上题的区别:在整个路径中多了障碍。不需要推导,因为我们走不了这一步。与上一题中有相同也有不同,因为从。老规矩,还是从左到右一层层遍历。从左往右遍历,从上往下遍历。但是由于障碍的存在,比如第。

糖炒栗子 1389

【Day39】代码随想录之动态规划_62.不同路径_63. 不同路径 II

根据题目, 类比爬楼梯,由于在一点开始只能向下或者向右移动一步,所以到达某一点的方法个数等于从上面到达+从左边到达的方法数之和。初始化:dp的第一行和第一列都只能从起点一直向右或者从起点一直向下,所以dp[0][i] = 0;思路很简单,在 62.不同路径 的基础上增加了障碍,如果有障碍说明 dp[i][j] = 0。在写代码上有一些的技巧。递推公式:dp[i][j] = dp[i-1][j]+dp[i][j-1]。dp[i]含义:从[0][0] 到达 [i][j] 的方法个数。

weixin_46275441的博客 1032

代码随想录算法训练营day39 | 62.不同路径,63. 不同路径 II

2、递推公式:dp[i][j]=dp[i-1][j]+dp[i][j-1],(i,j)处遇到障碍则设置dp[i][j]为0。4、遍历顺序,dp[i][j]由dp[i-1][j]和dp[i][j-1]确定,因此行和列都需要正向遍历。4、遍历顺序,dp[i][j]由dp[i-1][j]和dp[i][j-1]确定,因此行和列都需要正向遍历。3、dp矩阵初始化,dp[i][0]=1 dp[0][i]=1 初始化横竖就可。2、递推公式:dp[i][j]=dp[i-1][j]+dp[i][j-1];

2301_77450803的博客 547

代码随想录刷题Day39 | 62. 不同路径 | 63. 不同路径 II

代码随想录刷题Day39 | 62. 不同路径 | 63. 不同路径 II

DUM1615的博客 296

代码随想录训练营day39|62、不同路径;63、不同路径 II

机器人试图达到网格的右下角(在下图中标记为 “Finish” )。机器人试图达到网格的右下角(在下图中标记为“Finish”)。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。现在考虑网格中有障碍物。解释: 从左上角开始,总共有 3 条路径可以到达右下角。网格中的障碍物和空位置分别用 1 和 0 来表示。

weixin_43561267的博客 342

代码随想录day39||● 62.不同路径 ● 63. 不同路径 II

总结:dp数组不要想复杂了,首先找到最普遍规律,然后进行初始化,再确定遍历顺序。

m0_74108081的博客 632

代码随想录day39|动态规划 62.不同路径 63. 不同路径 II

学习记录

rogue1207的博客 308

代码随想录算法训练营第23期day39 |62.不同路径、63. 不同路径 II

从递归公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 中可以看出,一定是从左到右一层一层遍历,这样保证推导dp[i][j]的时候,dp[i - 1][j] 和 dp[i][j - 1]一定是有数值。这里要看一下递推公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1],dp[i][j]都是从其上方和左方推导而来,那么从左到右一层一层遍历就可以了。dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

weixin_42179093的博客 226

代码随想录训练营Day39| 62.不同路径 63. 不同路径 II

63. 不同路径 II - 力扣(LeetCode)62. 不同路径 - 力扣(LeetCode)63. 不同路径 II。63. 不同路径 II。

weixin_44174445的博客 289

代码随想录算法训练营Day39|62.不同路径、63. 不同路径 II

【代码】代码随想录算法训练营Day39|62.不同路径、63. 不同路径 II。

Magical_Jasen的博客 451
上一篇: 代码随想录Day38 |509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯
下一篇: 代码随想录Day41 | 343. 整数拆分 96.不同的二叉搜索树
sRiddle
博客等级 码龄7年 528粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值