代码随想录算法训练营第三十四天 | 62.不同路径 63.不同路径II 343.整数拆分
62.不同路径
题目链接:62. 不同路径 - 力扣(LeetCode)
文章讲解:代码随想录
视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili
思路:机器人位于一个 m x n 网格,每次只能向下或者向右移动一步,达到网格的右下角总共有多少条不同的路径
机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点。
1.确定dp数组以及下标的含义
dp[i][j] :表示从(0,0)出发,到(i, j)有dp[i][j]条不同的路径。
2.确定递推公式
想要求dp[i][j],只能有两个方向来推导出来,即dp[i - 1][j] 和 dp[i][j - 1],
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
3.dp数组的初始化
首先dp[i][0]一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理。
4.确定遍历顺序
dp[i][j]都是从其上方和左方推导而来,从左到右一层一层遍历就可以了。
5.举例推导dp数组
时间复杂度:O(m × n) 空间复杂度:O(m × n)

63. 不同路径 II
题目链接:63. 不同路径 II - 力扣(LeetCode)
文章讲解:代码随想录
视频讲解:动态规划,这次遇到障碍了| LeetCode:63. 不同路径 II_哔哩哔哩_bilibili
思路:机器人从(0 , 0) 位置出发,到(m - 1, n - 1)终点,中间有障碍物
1.确定dp数组以及下标的含义
dp[i][j] :表示从(0 ,0)出发,到(i, j)有dp[i][j]条不同的路径。
2.确定递推公式
dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。
有了障碍,(i, j)如果就是障碍的话应该就保持初始状态(初始状态为0)。
3.dp数组初始化
因为从(0, 0)的位置到(i, 0)的路径只有一条,所以dp[i][0]一定为1,dp[0][j]也同理。
如果(i, 0) 这条边有了障碍之后,障碍之后(包括障碍)都是走不到的位置了,所以障碍之后的dp[i][0]应该还是初始值0,下标(0, j)的初始化情况同理。
代码里for循环的终止条件,一旦遇到obstacleGrid[i][0] == 1的情况就停止dp[i][0]的赋值1的操作,dp[0][j]同理
4.确定遍历顺序
从左到右一层一层遍历
5.举例推导dp数组
时间复杂度:O(n × m) 空间复杂度:O(n × m)

343. 整数拆分
题目链接:343. 整数拆分 - 力扣(LeetCode)
文章讲解:代码随想录
视频讲解:动态规划,本题关键在于理解递推公式!| LeetCode:343. 整数拆分_哔哩哔哩_bilibili
思路:给定一个正整数 n,将其拆分为至少两个正整数的和,返回可以获得的最大乘积
1.确定dp数组以及下标的含义
dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。
2.确定递推公式
dp[i]最大乘积来自于,一个是j * (i - j) 直接相乘,一个是j * dp[i - j],
j * (i - j) 是单纯的把整数拆分为两个数相乘,而j * dp[i - j]是拆分成两个以及两个以上的个数相乘。
递推公式:dp[i] = max({dp[i], (i - j) * j, dp[i - j] * j});
也就是Max{不拆i-j, 拆i-j (且拆后乘积最大), 到上一轮(i-1)为止的最大乘积},放入dp[i]是因为dp[i]最后的值应该时当i固定j循环时,每一整轮的最大值,而不是每次j变化的最大值
3.dp的初始化
dp[2] = 1
4.确定遍历顺序
dp[i] 是依靠 dp[i - j]的状态,所以遍历i一定是从前向后遍历,先有dp[i - j]再有dp[i]。
5.举例推导dp数组
时间复杂度:O(n^2) 空间复杂度:O(n)
相关文章:
代码随想录算法训练营第三十四天 | 62.不同路径 63.不同路径II 343.整数拆分
62.不同路径 题目链接:62. 不同路径 - 力扣(LeetCode) 文章讲解:代码随想录 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili 思路:机器人位于一…...
2023第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(真题题解)(C++/Java题解)
记录刷题的过程、感悟、题解。 希望能帮到,那些与我一同前行的,来自远方的朋友😉 大纲: 1、日期统计-(解析)-暴力dfs(😉蓝桥专属 2、01串的熵-(解析)-不要chu…...
RK3568-适配ov5647摄像头
硬件原理图 CAM_GPIO是摄像头电源控制引脚,连接芯片GPIO4_C2 CAM_LEDON是摄像头led灯控制引脚,连接芯片GPIO4_C3编写设备树 / {ext_cam_clk: external-camera-clock {compatible = "fixed-clock";clock-frequency = <25000000>;clock-output-names = "…...
Java的设计模式详解
摘要:设计模式是软件工程中解决常见问题的经典方案。本文结合Java语言特性,深入解析常用设计模式的核心思想、实现方式及实际应用场景,帮助开发者提升代码质量和可维护性。 一、设计模式概述 1.1 什么是设计模式? 设计模式&…...
实战篇Redis
黑马程序员的Redis的笔记(后面补一下图片) 【黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目】https://www.bilibili.com/video/BV1cr4y1671t?p72&vd_source001f1c33a895eb5ed820b9a4…...
化学方程式配平 第33次CCF-CSP计算机软件能力认证
很经典的大模拟题目 但是还不算难 大模拟题最需要注意的就是细节 写代码一定要考虑全面 并且要细心多debug 多打断点STL库的熟练使用 istringstream真的处理字符串非常好用 注意解耦合思想 这样改代码debug更加清晰 https://www.acwing.com/problem/content/5724/ #includ…...
Java基础-25-继承-方法重写-子类构造器的特点-构造器this的调用
在面向对象编程中,继承是实现代码复用和扩展的重要机制。通过继承,子类可以继承父类的属性和方法,并且可以通过方法重写来改变或扩展父类的行为。此外,构造器在对象初始化过程中扮演了重要角色,尤其是在子类构造器中如…...
nvidia 各 GPU 架构匹配的 CUDA arch 和 CUDA gencode
使用 NVCC 进行编译 cuda c(.cu)时,arch 标志 (-arch) 指定了 CUDA 文件将为其编译的 NVIDIA GPU 架构的名称。 Gencodes (-gencode) 允许更多的 PTX 代,并且可以针对不同的架构重复多次。 NVIDIA 架构名称的列表,以及它们具有的计算能力&am…...
沉浸式体验测评|AI Ville:我在Web3小镇“生活”了一周
最近,我在朋友的推荐下,体验了 aivillebot 的项目。起初,我只是抱着试试看的心态,心想这不就是个 Web3 版的《星露谷物语》吗? 但是一周下来,我发现这个虚拟小镇也没那么简单——里面的居民不是目前端游或链…...
TTL 值 | 在 IP 协议、ping 工具及 DNS 解析中的作用
注:本文为 “TTL” 相关文章合辑。 未整理去重。 如有内容异常,请看原文。 TTL 值的意义 2007-10-18 11:33:17 TTL 是 IP 协议包中的一个值,用于标识网络路由器是否应丢弃在网络中停留时间过长的数据包。数据包可能因多种原因在一定时间内…...
人工智能之数学基础:初等反射阵
本文重点 在线性代数中,初等反射阵(Householder矩阵)作为一类特殊的正交矩阵,在矩阵变换、特征值计算及几何变换等领域具有广泛应用。其简洁的构造方式和丰富的数学性质,使其成为数值分析和几何处理中的重要工具。 什么是初等反射阵(豪斯霍尔德变换) I为单位矩阵,wwT…...
4.1 代码随想录第三十二天打卡
准备:完全背包理论基础-二维DP数组 1.完全背包就是同一物品可以往里多次装 2.这里先遍历背包 或物品都可以 3.dp[i][j] 表示从下标为[0-i]的物品,每个物品可以取无限次,放进容量为j的背包,价值总和最大是多少 518.零钱兑换II (1)题目描述…...
SQL Server:数据库镜像端点检查
目录标题 **1. 端点的作用****2. 检查的主要内容****(1)端点是否存在****(2)端点状态****(3)协议与端口****(4)权限配置** **3. 操作步骤(示例)****ÿ…...
【区块链安全 | 第九篇】基于Heimdall设计的智能合约反编译项目
文章目录 背景目的安装1、安装 Rust2、克隆 heimdall-dec3、编译 heimdall-dec4、运行 heimdall-dec 使用说明1、访问 Web 界面2、输入合约信息3、查看反编译结果 实战演示1、解析普通合约2、解析代理合约 背景 在区块链安全研究中,智能合约的审计和分析至关重要。…...
【Easylive】TokenUserInfoDto中@JsonIgnoreProperties和 Serializable 接口作用
【Easylive】项目常见问题解答(自用&持续更新中…) 汇总版 这段代码定义了一个名为 TokenUserInfoDto 的 DTO(数据传输对象),用于封装用户令牌信息。以下是对 JsonIgnoreProperties 和 Serializable 接口作用的详…...
k8s EmptyDir(空目录)详解
1. 定义与特性 emptyDir 是 Kubernetes 中一种临时存储卷类型,其生命周期与 Pod 完全绑定。当 Pod 被创建时,emptyDir 会在节点上生成一个空目录;当 Pod 被删除时,该目录及其数据会被永久清除。它主要用于同一 Pod 内多个容器间的…...
毕业设计:实现一个基于Python、Flask和OpenCV的人脸打卡Web系统(六)
毕业设计:实现一个基于Python、Flask和OpenCV的人脸打卡Web系统(六) Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” ,因为它使用简单的核心,…...
洛谷题单2-P5717 【深基3.习8】三角形分类-python-流程图重构
题目描述 给出三条线段 a , b , c a,b,c a,b,c 的长度,均是不大于 10000 10000 10000 的正整数。打算把这三条线段拼成一个三角形,它可以是什么三角形呢? 如果三条线段不能组成一个三角形,输出Not triangle;如果是…...
批量删除 txt/html/json/xml/csv 等文本文件空白行
我们常常会遇到需要删除 txt 文本文件中空白行的情况,如果文本文件较大,行数较多的时候,有些空白行不容易人工识别,这使得删除文本文件空白行变得非常繁琐,我们需要先找到空白的行,然后才能进行删除操作。尤…...
MySQL数据库中,tinyint(1) 和 tinyint 有什么区别
TINYINT(1) 和 TINYINT 的区别 在 MySQL 中,TINYINT(1) 和 TINYINT 本质上是相同的数据类型,但 TINYINT(1) 中的 (1) 实际上不会影响存储大小或取值范围。 1. TINYINT 及其取值范围 TINYINT 是 MySQL 中最小的整数类型,占用 1 个字节 (8 bi…...
android databinding使用教程
Android DataBinding 是一种可以将 UI 组件与数据源绑定的框架,能够减少 findViewById 的使用,并提高代码的可维护性。下面是 DataBinding 的完整使用教程: 1. 启用 DataBinding 在 build.gradle(Module 级别)中启用 …...
【FreeRtos】任务调度器可以被挂起吗?
1. 省流回答 FreeRTOS的任务调度器可以被挂起(Suspend)。 通过调用API函数 vTaskSuspendAll(),可以临时禁止任务调度器的运行,此时系统将不再进行任务切换(包括抢占式调度和时间片轮转),但中断…...
ES5内容之String接口
注意:slice、substr、substring 都接受一个或两个参数,第一个参数指定字符串的开始位置,第二个参数表示子字符串到哪里结束,slice 和 substring 的第二个参数指定的是子字符串的最后一个字符后面的位置,substr 第二个参…...
k8s运维面试总结(持续更新)
一、你使用的promethues监控pod的哪些指标? CPU使用率 内存使用率 网络吞吐量 磁盘I/O 资源限制和配额:Prometheus可以监控Pod的资源请求和限制,确保它们符合预设的配额,防止资源过度使用。具体指标如container_spec_cpu_quota用于…...
中级:MyBatis面试题深度剖析
一、引言 在Java持久层技术中,MyBatis凭借其强大的映射功能和灵活的SQL编写方式,成为许多企业的首选。面试官通过MyBatis相关问题,考察候选人对框架核心组件的理解、配置管理能力以及在实际项目中解决问题的能力。本文将深入剖析MyBatis的配…...
Kubernetes高级应用(NFS存储)
一、介绍 在 **Kubernetes(K8s)** 中,**NFS(Network File System)存储** 是一种常见的 **持久化存储(Persistent Storage)** 解决方案,适用于需要共享存储、数据持久化或跨 Pod 访问…...
Mysql之事务(下)
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 5. 事务的隔离级别与并发控制 5.1事务的隔离级别 5.2查看与设置事务的…...
某地老旧房屋自动化监测项目
1. 项目简介 自从上个世纪90年代以来,我国经济发展迅猛,在此期间大量建筑平地而起,并且多为砖混结构的住房,使用寿命通常约为30-50年,钢筋混凝土结构,钢结构等高层建筑,这些建筑在一般情况下的…...
【QT】QT的多界面跳转以及界面之间传递参数
QT的多界面跳转以及界面之间传递参数 一、在QT工程中添加新的界面二、多界面跳转的两种情况1、A界面跳到B界面,不需要返回2、A界面跳到B界面,需要返回1)使用this指针传递将当前界面地址传递给下一界面2)使用parentWidget函数获取上…...
【学习笔记】计算机网络(五)
第5章 运输层 文章目录 第5章 运输层5.1 运输层协议概述5.1.1 进程之间的通信5.1.2 运输层的两个主要协议5.1.3 运输层的端口 5.2 用户数据报协议 UDP5.2.1 UDP 概述5.2.2 UDP的首部格式 5.3 传输控制协议 TCP 概述5.3.1 TCP 最主要的特点5.3.2 TCP 的连接 5.4 可靠传输的工作原…...
