当前位置: 首页 > news >正文

代码随想录算法【Day34】

Day34

62.不同路径

思路

第一种:深搜 -> 超时

第二种:动态规划

第三种:数论

动态规划代码如下:

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n, 0));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];}
};

五部曲

1.dp数组及下标定义:二维dp数组dp[i][j]表示从(0,0)出发,到(i,j)有dp[i][j]条不同的路径

2.递推公式:dp[i][j] = dp[i - 1][j] + dp[i][j - 1],即当前格子的值等于上面的格子和左边的格子的值的总和

3.初始化:将第一行和第一列初始为1

4.遍历顺序:从左到右一层一层往下遍历

5.数组的数据应该是怎样的:

62.不同路径1

63. 不同路径 II

思路

有障碍的话,其实就是标记对应的dp table(dp数组)保持初始值(0)就可以了。

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m = obstacleGrid.size();int n = obstacleGrid[0].size();if (obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) //如果在起点或终点出现了障碍,直接返回0return 0;vector<vector<int>> dp(m, vector<int>(n, 0));for (int i = 0; i < m && obstacleGrid[i][0] == 0; i++) dp[i][0] = 1;for (int j = 0; j < n && obstacleGrid[0][j] == 0; j++) dp[0][j] = 1;for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {if (obstacleGrid[i][j] == 1) continue;dp[i][j] = dp[i - 1][j] + dp[i][j - 1];}}return dp[m - 1][n - 1];}
};

五部曲

和上一题是一样的

相关文章:

代码随想录算法【Day34】

Day34 62.不同路径 思路 第一种&#xff1a;深搜 -> 超时 第二种&#xff1a;动态规划 第三种&#xff1a;数论 动态规划代码如下&#xff1a; class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m, vector<int>(n,…...

《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》重印P126、P131勘误

勘误&#xff1a;打圈的地方有指数二字。 指数滤波器本身是错误的概念&#xff0c;我在书上打了一个叉&#xff0c;排版人员误删了。 滤波器部分从根本上有问题&#xff0c;本来要改&#xff0c;但是时间不够了。 和廖老师讨论多次后&#xff0c;决定大动。指数滤波器的概念…...

vim多文件操作如何同屏开多个文件

[rootxxx ~]# vimdiff aa.txt bb.txt cc.txt #带颜色比较的纵向排列打开的同屏多文件操作 示例&#xff1a; [rootxxx ~]# vimdiff -o aa.txt bb.txt cc.txt #带颜色比较的横向排列打开的同屏多文件操作 示例&#xff1a; [rootxxx ~]# vim -O aa.txt bb.txt c…...

day6手机摄影社区,可以去苹果摄影社区学习拍摄技巧

逛自己手机的社区&#xff1a;即&#xff08;手机牌子&#xff09;摄影社区 拍照时防止抖动可以控制自己的呼吸&#xff0c;不要大喘气 拍一张照片后&#xff0c;如何简单的用手机修图&#xff1f; HDR模式就是让高光部分和阴影部分更协调&#xff08;拍风紧时可以打开&…...

渗透测试之WAF规则触发绕过规则之规则库绕过方式

目录 Waf触发规则的绕过 特殊字符替换空格 实例 特殊字符拼接绕过waf Mysql 内置得方法 注释包含关键字 实例 Waf触发规则的绕过 特殊字符替换空格 用一些特殊字符代替空格&#xff0c;比如在mysql中%0a是换行&#xff0c;可以代替空格 这个方法也可以部分绕过最新版本的…...

C语言【基础篇】之流程控制——掌握三大结构的奥秘

流程控制 &#x1f680;前言&#x1f99c;顺序结构&#x1f4af; 定义&#x1f4af;执行规则 &#x1f31f;选择结构&#x1f4af;if语句&#x1f4af;switch语句&#x1f4af;case穿透规则 &#x1f914;循环结构&#x1f4af;for循环&#x1f4af;while循环&#x1f4af;do -…...

c++小知识点

抽象类包含至少一个纯虚函数&#xff0c;不能实例化对象。派生类必须实现基类的所有纯虚函数才能成为非抽象类&#xff0c;从而可以实例化对象。可以使用抽象类的指针或引用指向派生类对象&#xff0c;实现多态性调用。抽象类虽然不能直接实例化&#xff0c;但可以拥有构造函数…...

团体程序设计天梯赛-练习集——L1-022 奇偶分家

前言 这几道题都偏简单一点&#xff0c;没有什么计算&#xff0c;10分 L1-022 奇偶分家 给定N个正整数&#xff0c;请统计奇数和偶数各有多少个&#xff1f; 输入格式&#xff1a; 输入第一行给出一个正整N&#xff08;≤1000&#xff09;&#xff1b;第2行给出N个非负整数…...

vue项目中,如何获取某一部分的宽高

vue项目中&#xff0c;如何获取某一部分的宽高 在Vue项目中&#xff0c;如果你想要获取某个DOM元素的宽度和高度&#xff0c;可以使用原生的JavaScript方法或者结合Vue的特性来实现。以下是几种常见的方法&#xff1a; 使用ref属性 你可以给需要测量宽高的元素添加一个ref属…...

LeetCode - #195 Swift 实现打印文件中的第十行

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

机试题——最小矩阵宽度

题目描述 给定一个矩阵&#xff0c;包含 N * M 个整数&#xff0c;和一个包含 K 个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵&#xff0c;要求子矩阵包含数组中所有的整数。 输入描述 第一行输入两个正整数 N&#xff0c;M&#xff0c;表示矩阵大小。 接下…...

香港维尔利健康科技集团重金投资,内地多地体验中心同步启动

香港维尔利健康科技集团近期宣布&#xff0c;将投资数亿港元在内地多个城市建立全新的健康科技体验中心。这一战略举措旨在进一步拓展集团在内地市场的布局&#xff0c;推动创新医疗技术的普及和应用。 多地布局&#xff0c;覆盖主要城市 据悉&#xff0c;维尔利健康科技集团将…...

ZYNQ-IP-AXI-GPIO

AXI GPIO 可以将 PS 端的一个 AXI 4-Lite 接口转化为 GPIO 接口&#xff0c;并且可以被配置为单端口或双端口&#xff0c;每个通道的位宽可以独立配置。 通过使能三态门可以将端口动态地配置为输入或输出。 AXIGPIO 是 ZYNQ PL 端的一个 IP 核&#xff0c;可以将 AXI-Lite Mas…...

Netty的心跳机制怎么实现的?

大家好&#xff0c;我是锋哥。今天分享关于【Netty的心跳机制怎么实现的&#xff1f;】面试题。希望对大家有帮助&#xff1b; Netty的心跳机制怎么实现的&#xff1f; Netty的心跳机制主要是通过在客户端和服务器之间定期发送特殊的数据包&#xff08;比如空消息或自定义的控…...

java基础——专题一 《面向对象之前需要掌握的知识》

目录 Δ前言 一、拾枝杂谈 1.Java是什么&#xff1f; 2.计组前瞻&#xff1a; 3.JDK&#xff0c;JRE&#xff0c;JVM&#xff1f; 二、环境搭建 1.JDK安装和配置&#xff1a; 1.1 人话 1.2 JDK的配置 1.3 如何切换JDK的版本&#xff1f; 2.DOS的简单使用&#xff1a; 2.1 介…...

Python 数据清洗与处理常用方法全解析

在数据处理与分析过程中&#xff0c;缺失值、重复值、异常值等问题是常见的挑战。本文总结了多种数据清洗与处理方法&#xff1a;缺失值处理包括删除缺失值、固定值填充、前后向填充以及删除缺失率高的列&#xff1b;重复值处理通过删除或标记重复项解决数据冗余问题&#xff1…...

BFS算法的实现(例题)

这是C算法基础-搜索与图论专栏的第X篇文章&#xff0c;专栏详情请见此处。 引入 上篇博客&#xff0c;我们学习了BFS算法的大体套路&#xff0c;这次&#xff0c;我将会通过两个例题来更详细的讲解。 下面我们就来讲BFS算法&#xff08;例题&#xff09;的实现。 过程 例题1&a…...

clean code阅读笔记——如何命名?

命名的原则 1. “小处诚实非小事“ 有个词叫做”以小见大“。以建筑作喻&#xff0c;宏大建筑中最细小的部分&#xff0c;比如关不紧的门、未铺平的地板&#xff0c;甚至时凌乱的桌面&#xff0c;都会将整个大局的魅力毁灭殆尽&#xff0c;这就是整洁代码之所系。 2. 有意义…...

MacOS 如何解决无法打开 ‘xxx’,因为 Apple 无法检查其是否包含恶意软件

背景 在安装软件时&#xff0c;遇到“无法打开 ‘xxx’&#xff0c;因为 Apple 无法检查其是否包含恶意软件” 的提示&#xff0c;许多用户可能会感到困惑&#xff0c;不知道该如何处理。遇到这个问题时&#xff0c;按以下步骤操作即可解决。 首先&#xff0c;这个警告提示的出…...

Java并发学习:进程与线程的区别

进程的基本原理 一个进程是一个程序的一次启动和执行&#xff0c;是操作系统程序装入内存&#xff0c;给程序分配必要的系统资源&#xff0c;并且开始运行程序的指令。 同一个程序可以多次启动&#xff0c;对应多个进程&#xff0c;例如同一个浏览器打开多次。 一个进程由程…...

新手友好:通过快马平台轻松上手vc16188视频处理开发

作为一个刚接触视频处理的新手&#xff0c;我最近在InsCode(快马)平台上尝试了一个vc16188视频基础处理项目&#xff0c;整个过程比我预想的顺利很多。这个平台最让我惊喜的是&#xff0c;它能根据我的需求描述直接生成完整可运行的项目代码&#xff0c;而且代码结构清晰、注释…...

新手也能懂!用沁恒CH579的TMOS实现第一个蓝牙外设(附完整代码)

从零开始&#xff1a;用沁恒CH579打造你的第一个蓝牙LED控制器 第一次接触嵌入式开发的新手们&#xff0c;常常会被各种专业术语和复杂框架吓退。但今天&#xff0c;我要带你用沁恒CH579开发板和它的TMOS系统&#xff0c;完成一个实实在在的蓝牙控制LED项目——不需要深厚的编…...

从零开始掌握drawio:免费开源绘图工具的全方位指南

1. 为什么你需要drawio这款绘图神器 第一次接触drawio是在三年前的一个项目会议上&#xff0c;当时团队需要快速绘制一套系统架构图。同事随手打开浏览器输入app.diagrams.net&#xff0c;五分钟内就搭建出了清晰的流程图框架。那一刻我才发现&#xff0c;原来专业绘图可以如此…...

一键部署Chat2DB:Docker与cpolar打造跨地域数据库管理神器

1. 为什么你需要Chat2DB和Docker的黄金组合 最近两年有个特别明显的趋势&#xff1a;数据正在从专业领域走向全民化。我见过太多产品经理被SQL卡住脖子&#xff0c;市场团队等一份报表要排期三天&#xff0c;甚至财务同事为了跑个月度数据要专门请IT部门吃饭。直到去年第一次用…...

别再死记硬背了!用这个动画+仿真,5分钟搞懂CMOS反相器到底怎么‘反’的

别再死记硬背了&#xff01;用动画仿真5分钟搞懂CMOS反相器的翻转奥秘 第一次翻开数字电路教材时&#xff0c;那个由PMOS和NMOS组成的对称结构总让我困惑——为什么PMOS必须在上方&#xff1f;为什么输入高电平反而输出低电平&#xff1f;直到我在实验室里用仿真软件亲眼看到电…...

B站视频收藏难?开源工具BilibiliDown通过多线程技术实现批量下载,效率提升85%

B站视频收藏难&#xff1f;开源工具BilibiliDown通过多线程技术实现批量下载&#xff0c;效率提升85% 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址:…...

从概念到工具:实战构建基于clawhub skill的个人技能管理体系

最近在整理自己的技能树时&#xff0c;发现需要一个能直观管理个人技术栈的工具。尝试用clawhub skill框架搭建了一套解决方案&#xff0c;配合InsCode(快马)平台的快速部署能力&#xff0c;三天就做出了可实际使用的技能看板。记录下关键实现思路&#xff0c;或许对同样想系统…...

告别单点故障:Azkaban 3.84.4多Executor集群部署与性能调优实战

告别单点故障&#xff1a;Azkaban 3.84.4多Executor集群部署与性能调优实战 在数据密集型企业的日常运营中&#xff0c;任务调度系统如同中枢神经般重要。当团队规模扩大、数据处理需求激增时&#xff0c;单节点Azkaban往往会成为性能瓶颈——任务队列堆积、响应延迟&#xff0…...

Cloudflare Tunnel零基础教程:5分钟搞定内网穿透(附移动网络解决方案)

Cloudflare Tunnel零基础实战指南&#xff1a;从内网穿透到移动网络优化 在数字化办公与远程协作成为常态的今天&#xff0c;如何安全高效地访问内网资源成为许多技术爱好者和小型企业IT人员的刚需。传统的内网穿透方案往往需要复杂的端口映射、动态DNS配置&#xff0c;甚至面临…...

物理动力学系统的强化学习:一种替代方法

原文&#xff1a;towardsdatascience.com/rl-for-physical-dynamical-systems-an-alternative-approach-8e2269dc1e79?sourcecollection_archive---------1-----------------------#2024-07-28 重新引入遗传算法并与神经网络进行比较 https://medium.com/retter_42511?sourc…...