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

【更新中】Leetcode中遇到的最短路径算法

dijsktra算法模板:

def dijkstra(x):#x表示出发点dis=[inf]*n #dis记录从x出发到各个点的最短距离,初始化为infdis[x]=0    #源点到自己的距离为0vis=[False]*n #检查各个点是否访问过for _ in range(n-1): #检查除了源点的其他n-1个点,更新disnode=-1 #开始假设不知道谁是离源点最近的点for j in range(n):#循环查找谁是离源点最近的那个点if not vis[j] and (node==-1 or dis[j]<dis[node]):node=jfor j in range(n):#对node的邻居点进行松弛处理dis[j]=min(dis[j],dis[node]+g[node][j])vis[node]=True #对node点标记为已访问

​​​​​​​743. 网络延迟时间
因为本题的节点是从1到n,所以最后把dis数组中的第一个忽略掉(dis[1:])

然后就是经典的dijkstra最短路径算法,套用模板即可。

class Solution:def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:g=[[inf]*(n+1) for _ in range(n+1)]for x,y,w in times:g[x][y]=wdis=[inf]*(n+1)dis[k]=0vis=[False]*(n+1)for _ in range(n):x=-1for i in range(1,n+1):if not vis[i] and (x==-1 or dis[i]<dis[x]):x=ifor i in range(1,n+1):dis[i]=min(dis[i],dis[x]+g[x][i])vis[x]=Trueans=max(dis[1:])return ans if ans!=inf else -1

2642. 设计可以求最短路径的图类
又是dijkstra最短路径算法,这里需要判断一下能否到达终点的问题:

class Graph:def __init__(self, n: int, edges: List[List[int]]):self.n=nself.g=[[float("INF")]*n for _ in range(self.n)]for x,y,cost in edges:self.g[x][y]=costdef addEdge(self, edge: List[int]) -> None:self.g[edge[0]][edge[1]]=edge[2]def shortestPath(self, node1: int, node2: int) -> int:n=len(self.g)dis=[float('INF')]*ndis[node1]=0vis=[False]*nwhile 1:x=-1for i,(b,d) in enumerate(zip(vis,dis)):if not b and (x<0 or d<dis[x]):x=iif x<0 or dis[x]==float('INF'):return -1if x==node2:return dis[x]vis[x]=Truefor y,w in enumerate(self.g[x]):if dis[x]+w<dis[y]:dis[y]=dis[x]+w# Your Graph object will be instantiated and called as such:
# obj = Graph(n, edges)
# obj.addEdge(edge)
# param_2 = obj.shortestPath(node1,node2)

1334. 阈值距离内邻居最少的城市
枚举每个点作为出发点,算法返回小于等于阈值的数目即可。

因为题目要求返回数量最少且编号最大的点,所以从n-1到0遍历即可。

class Solution:def findTheCity(self, n: int, edges: List[List[int]], distanceThreshold: int) -> int:g=[[inf]*n for _ in range(n)]for x,y,w in edges:g[x][y]=wg[y][x]=w#枚举每个点作为出发点,做dijkstra算法def dijkstra(x):dis=[inf]*ndis[x]=0vis=[False]*nfor _ in range(n-1):node=-1for j in range(n):if not vis[j] and (node==-1 or dis[j]<dis[node]):node=jfor j in range(n):dis[j]=min(dis[j],dis[node]+g[node][j])vis[node]=Truereturn sum(d<=distanceThreshold for d in dis)ans,cnt=n,inf    for i in range(n-1,-1,-1):if dijkstra(i)<cnt:cnt=dijkstra(i)ans=ireturn ans

相关文章:

【更新中】Leetcode中遇到的最短路径算法

dijsktra算法模板&#xff1a; def dijkstra(x):#x表示出发点dis[inf]*n #dis记录从x出发到各个点的最短距离&#xff0c;初始化为infdis[x]0 #源点到自己的距离为0vis[False]*n #检查各个点是否访问过for _ in range(n-1): #检查除了源点的其他n-1个点&#xff0c;更新dis…...

Git学习笔记之基础

本笔记是阅读《git pro》所写&#xff0c;仅供参考。 《git pro》网址https://git-scm.com/book/en/v2 git官网 https://git-scm.com/ 一、git起步 1.1、检查配置信息 git config --list查看所有的配置以及它们所在的文件 git config --list --show-origin可能有重复的变量名…...

STCubeIDE 编译bootloader

头文件重复引用解决办法。 参考&#xff1a;STM32CubeIDE IAP原理讲解&#xff0c;及UART双APP交替升级IAP实现-CSDN博客 移植到Air32时&#xff0c;RAM的大小(无论boot程序还是app 程序) 尽量不动&#xff0c;如果动了会影响最终的 APP 跳转 flash 大小可以随意修改&#xf…...

Python学习:函数

函数定义 在Python中&#xff0c;函数&#xff08;Function&#xff09;是一组用于完成特定任务或计算的语句块。定义函数可以让我们将一段代码重用多次&#xff0c;提高代码的可读性和可维护性。以下是定义函数的基本语法和结构&#xff1a; def function_name(parameters):&…...

docker run 使用 -p 命令一直显示端口被占用

解决办法 将 -p 换成 --net host 例如: docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /root/oneapi/data:/data justsong/one-api # 换成 docker run --name one-api -d --restart always --net...

Rust 实战练习 - 1. 输入,输出,环境变量,字符,字符串

目标&#xff1a; 获取程序命令行参数标准输入输出获取环境变量字符串&#xff0c;字符初步学习 cargo传递参数&#xff0c;需要加上-- use std::{env, ffi::OsString, io, io::Write};fn main() {println!("OS Env: {:?} > {:?}", env::current_dir().unwra…...

RuoYi-Vue-Plus(登录流程)

一、前端登录请求 登录按钮: src\views\login.vue 页面中登录片段,调用了handleLogin 方法,如下: @click.native.prevent="handleLogin" <el-button:loading="loading"size="medium"type="primary"style="width:100%;&qu…...

【数学】 【分数】 【字符串】972. 相等的有理数

本文涉及知识点 数学 分数 字符串 LeetCode972. 相等的有理数 给定两个字符串 s 和 t &#xff0c;每个字符串代表一个非负有理数&#xff0c;只有当它们表示相同的数字时才返回 true 。字符串中可以使用括号来表示有理数的重复部分。 有理数 最多可以用三个部分来表示&…...

【4】DongshanPI-Seven 应用开发_文件IO

目录 1.文件IO1.1 文件IO分类1.2 查看系统调用IO用法 2. open 函数3. write 函数4. read 函数5 dup函数 1.文件IO 1.1 文件IO分类 在Linux系统中&#xff0c;一切都是“文件”&#xff1a;普通文件、驱动程序、网络通信等。所有的操作都是通过文件IO来操作的。 在Linux操作文…...

SEO 的未来:GPT 和 AI 如何改变关键词研究

谷歌Gemini与百度文心一言&#xff1a;AI训练数据的较量 介绍 想象一下&#xff0c;有一个工具不仅可以理解错综复杂的关键字网络&#xff0c;还可以预测搜索引擎查询的变化趋势。 这就是生成式预训练 Transformer (GPT) 和其他人工智能技术发挥作用的地方&#xff0c;以我们从…...

面试八股文之JAVA基础

JAVA基础 DNS、CDN&#xff1f;如何实现对象克隆?父子类静态代码块, 非静态代码块, 构造方法执行顺序?String s new String("abc") 创建了几个对象, 分别放到哪里?OSI网络模型七层&#xff1f;应用层协议&#xff1f;http协议和https协议区别&#xff1f;传输层协…...

网络连接中——长连接和短连接详解

一、TCP功能 TCP在真正开始进行数据传输之前,Server 和 Client 之间必须建立一个连接。当数据传输完成后,双方不再需要这个连接时,就可以释放这个连接。 TCP连接的建立是通过三次握手,而连接的释放是通过四次挥手。所以说,每个TCP连接的建立和释放都是需要消耗资源和时间…...

PEReDi 完全隐私的央行数字货币方案

第一个对完全隐私保护建模的方案&#xff0c;基于账户模型&#xff0c;要求交易双方都在线。 角色分类 中央银行 B B B&#xff1a;负责发行数字货币和货币政策&#xff0c;但不控制用户账户的状态&#xff0c;没有能力对交易的发送者或接收者进行去匿名化或披露与特定交易相…...

yolov5+pyside6+登录+用户管理目标检测可视化源码

一、软件简介 这是基于yolov5目标检测实现的源码&#xff0c;提供了用户登录功能界面&#xff1b; 用户需要输入正确的用户名和密码才可以登录。如果是超级管理员&#xff0c;可以修改普通用户的信息&#xff0c;并且在检测界面的右上角显示【管理用户】按钮。 支持图片、视频、…...

电脑如何设置个性便签 电脑个性便签分享

每次坐在电脑前&#xff0c;我都仿佛置身于一片信息的海洋。工作、生活、学习&#xff0c;方方面面的事情都需要我用心去记录。在这样一个快节奏的时代&#xff0c;电脑无疑成了我最得力的助手。但记事的时候&#xff0c;我总希望有一个既方便又有个性的工具&#xff0c;能让我…...

备考ICA----Istio实验12---配置双向TLS Istio Ingress Gateway实验

备考ICA----Istio实验12—配置双向TLS Istio Ingress Gateway实验 本实验部分配置延续上个Istio实验11 1. 重新配置secret 重新配置secret使其带有ca证书可以验证客户端证书是否合法 先删除原有secret,再配置新的secret # 删除原tls类型的secret kubectl -n istio-system d…...

SpringBoot 统一后端返回格式、处理全局异常

文章目录 引言I 统一标准格式1.1 定义返回标准格式1.2 定义状态码1.3 返回数据模型1.4 枚举定义1.5 Json序列化处理1.6 获取枚举字典II 处理全局异常2.1 全局异常处理器2.2 自定义异常2.3 请求数据模型III 预备知识:注解3.1 JsonInclude3.2 JsonIgnoreProperties...

C++学习基础版(一)

目录 一、C入门 1、C和C的区别 2、解读C程序 3、命名空间 4、输入输出 &#xff08;1&#xff09;cout输出流 &#xff08;2&#xff09;endl操纵符 &#xff08;3&#xff09;cin输入流 二、C表达式和控制语句 1、数据机构 特别&#xff1a;布尔类型bool 2、算数运…...

Rust 双向链表 LinkedList 和安全删除元素的方法

一、LinkedList 基本用法 在Rust中&#xff0c;LinkedList 是标准库中 std::collections 模块提供的一个双向链表实现。这个双向链表在每个节点中都保存了其前一个和后一个节点的引用&#xff0c;允许在链表的任一端进行有效的添加和移除操作。 以下是一个简单的示例&#xf…...

Android 开发中 Gradle 使用详解:构建、配置与优化技巧

文章目录 1. 基本概念2. 配置构建脚本2.1 项目级构建脚本2.2 模块级构建脚本 3. 自定义构建变体和应用 flavorDimensions4. 多模块项目4.1 创建模块4.2 配置模块依赖 5. 使用 Gradle 插件6. 使用 Gradle 命令 Gradle 是一种先进的构建工具&#xff0c;它被广泛应用于 Android 开…...

Agentic o3调度器与Gemma/Nemotron-H推理范式演进

1. 项目概述&#xff1a;一场悄然发生的模型推理范式迁移最近在几个核心AI工程团队的内部技术简报里&#xff0c;反复看到一个代号“TAI#149”的专项分析报告被高频引用——它不是某家公司的新品发布会通稿&#xff0c;而是一份由一线模型部署工程师自发整理、持续迭代的实战观…...

AzurLaneAutoScript:碧蓝航线自动化管理的完整解决方案

AzurLaneAutoScript&#xff1a;碧蓝航线自动化管理的完整解决方案 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研&#xff0c;全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧…...

为什么你的Agent总在真实场景中“失语”?揭秘LLM调用链中被忽略的2个关键中间态(Meta Llama-3.1内部调试日志首度公开)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI Agent智能体未来趋势 AI Agent正从单任务执行者演进为具备目标分解、工具调用、环境感知与持续反思能力的自主协作体。其发展不再局限于模型规模扩张&#xff0c;而转向系统级架构创新——包括记忆机制标准…...

英语长期没进步?大多是学习方式错了

很多人英语学了很久却毫无起色&#xff0c;归根结底&#xff0c;都栽在了同一个核心问题上。前阵子整理电脑文件&#xff0c;我翻出了早年的英语学习笔记。厚厚几十页的单词汇总、密密麻麻的语法批注&#xff0c;收藏夹里囤了上百个教学视频&#xff0c;还有曾经热血满满给自己…...

用wireshark抓取分析EtherCAT报文

&#x1f4dc; 第1章&#xff1a;EtherCAT报文结构 EtherCAT报文结构及Wireshark对应显示&#xff1a; 以太网帧头&#xff1a;14字节&#xff0c;包含目标/源MAC地址&#xff0c;帧类型 (EtherType) 固定为 0x88A4。EtherCAT帧头&#xff1a;2字节&#xff0c;包含一个11位的“…...

实时反欺诈Agent部署失败率高达68%?金融IT总监亲述4类典型故障链及容灾切换黄金12分钟法则

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;实时反欺诈Agent部署失败率高达68%&#xff1f;金融IT总监亲述4类典型故障链及容灾切换黄金12分钟法则 某头部城商行在2023年Q3上线新一代实时反欺诈Agent集群后&#xff0c;监控平台显示首次部署成功率仅32…...

AI时代中小企业还要不要上ERP?2026年最新思考

最近DeepSeek爆火&#xff0c;AI Agent层出不穷&#xff0c;不少老板问我&#xff1a;都2026年了&#xff0c;AI这么厉害&#xff0c;中小企业还有必要上ERP吗&#xff1f;我的答案是&#xff1a;不仅要上&#xff0c;而且要上得更聪明。一、AI再强&#xff0c;也替代不了ERP的…...

Linux sed 流编辑器实战 —— 批量修改文本、替换、删除、插入(运维必备)

前言sed 是 Linux 最核心的非交互式流编辑器&#xff0c;专门用来批量修改文本、替换字符串、删除行、插入行、注释配置&#xff0c;不用手动打开文件&#xff0c;一条命令搞定批量操作&#xff0c;是运维、开发处理文件的神器。本文从基础语法到正则实战&#xff0c;全覆盖工作…...

【函数栈帧的创建和销毁:一文看懂 C/C++ 函数调用的底层秘密】

本文适合&#xff1a;被“局部变量为什么是随机值”、“函数怎么传参”、“返回值怎么带回来”这些问题困扰过的初学者。 文末会解释&#xff1a;为什么返回局部变量的引用有时能打印出正确值&#xff0c;但依然是错的&#xff1f;Hello,大家好呀&#xff0c;这里是小J,函数栈帧…...

源代码论文分享|基于 Spring Boot 的校园商铺管理系统!

很多同学选毕业设计时都会纠结&#xff1a;题目太简单&#xff0c;怕老师觉得没含金量&#xff1b;题目太复杂&#xff0c;又怕自己做不完。 其实像校园商铺管理系统这种项目&#xff0c;就挺适合拿来做毕设或课程设计。它有真实场景&#xff0c;功能也能展开&#xff0c;技术…...