Leetcode 1786. Number of Restricted Paths From First to Last Node

2023-10-21 02:30

本文主要是介绍Leetcode 1786. Number of Restricted Paths From First to Last Node,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

在这里插入图片描述

解析

题目意思首先理解一下。就是说第一个节点和最后一个节点是1和n固定,返回符合要求的restricted path个数。这个restricted含义是,在path中离最后一个节点也就是n越远的节点,距离也必须越大。这里需要注意的是除了开始节点和结束节点固定之外,并没有要求path中的节点本身的数字必须要有顺序,只需要离最后一个节点的距离保持满足条件即可。所以解题分为两步:

  • 通过最短路径算法找到每个节点离最后一个节点的最短距离,这里采用dijkstra
  • 找出符合条件的节点到最后节点距离降序的路径个数,这里采用dfs+memorization
    另一点值得注意的是,其实这个第二步就是个top bottom的dp,但是这个题目却很难用我们熟悉的dp数组的方式来写,而必须采用这种recursion的方式。至于这个问题还没有想的特别清楚,可能的原因在于:除了开始节点和结束节点固定之外,并没有要求path中的节点本身的数字必须要有顺序,只需要离最后一个节点的距离保持满足条件即可。因为这个,所以没有办法很方便的提前建立子问题的关系,所以也不能很方便的找到便利节点的顺序,也就无法用那种常见的for循环dp,这个有待进一步考证
class Solution:def countRestrictedPaths(self, n: int, edges: List[List[int]]) -> int:def dfs(node):if memo[node] != -1:return memo[node]ans = 0for nei,_ in g[node]:if dists[nei] < dists[node]:ans += dfs(nei)ans %= 1e9+7memo[node] = ansreturn memo[node]# build graphg = collections.defaultdict(list)for e in edges:g[e[0]].append([e[1],e[2]])g[e[1]]

这篇关于Leetcode 1786. Number of Restricted Paths From First to Last Node的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/251339

相关文章

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一