力扣刷题之旅:进阶篇(六)—— 图论与最短路径问题

++**力扣(LeetCode)**是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。++

--点击进入刷题地址


引言

在算法的广阔天地中,图论是一个非常重要的领域。++图论问题常常涉及到节点之间的连接关系和路径问题,而最短路径问题则是其中的经典之一。++ 今天,我们就来一起探索一道关于图论与最短路径的经典题目:"单源最短路径问题"。

题目描述 :

给定一个带权有向图 ,图中包含 n 个节点和 m 条边,每条边都有一个权值表示通过这条边所需的花费。现在,我们需要找出从给定起点到其他所有节点的最短路径。

示例:

输入:
python 复制代码
图的邻接表表示如下:
3  
3 2  
1 3 4  
2 1 1  
1 2 2

++其中,3 表示节点数量,3 2 表示有 3 条边,第 1 条边的起点是 1,终点是 2,权值是 3;第 2 条边的起点是 1,终点是 3,权值是 4;第 3 条边的起点是 2,终点是 1,权值是 1。++

输出:
python 复制代码
从节点 1 到其他节点的最短路径长度分别为 [0, 3, 4]。

解题思路:

  • 为了解决这个问题,++我们可以使用 Dijkstra 算法。Dijkstra 算法是一种用于解决单源最短路径问题的贪心算法。++它的基本思想是从起点开始,逐步向外扩展,不断更新起点到其他节点的最短路径长度。
  • 具体实现时,我们可以使用一个数组 dist 来记录起点到其他节点的最短路径长度,初始时将所有节点的距离都设置为无穷大,除了起点到自身的距离为 0。++然后,我们每次从未被访问的节点中选择一个距离最短的节点,更新其相邻节点的距离。重复这个过程,直到所有节点都被访问过为止。++

代码实现 :

python 复制代码
import heapq  
  
def dijkstra(graph, start):  
    n = len(graph)  
    dist = [float('inf')] * n  
    dist[start] = 0  
    heap = [(0, start)]  
      
    while heap:  
        curr_dist, curr_node = heapq.heappop(heap)  
          
        if curr_dist > dist[curr_node]:  
            continue  
          
        for neighbor, weight in graph[curr_node].items():  
            new_dist = curr_dist + weight  
            if new_dist < dist[neighbor]:  
                dist[neighbor] = new_dist  
                heapq.heappush(heap, (new_dist, neighbor))  
      
    return dist

新年祝福 :

++随着这道题目的探索,我们也迎来了新的一年。在这里,我衷心祝愿大家在新的一年里,事业有成,学业进步,身体健康,万事如意!愿你的算法之路越走越宽,不断刷新自己的记录,创造更加辉煌的成就!新年快乐!++

相关推荐
♡すぎ♡8 分钟前
SWE 的基本条件
算法·swe·浅水模拟
Rocky Ding*18 分钟前
【三年面试五年模拟】2026-10-25 华为大模型算法岗一面面经:13道题解析与算法实现
论文阅读·人工智能·深度学习·机器学习·大模型·aigc·ai-native
工具派32 分钟前
PDF签名贴上去为什么发虚?尺寸、DPI与坐标的边界实测
java·python·pdf
谙忆44 分钟前
PNG改成ICO为什么不能用:用Python检查多尺寸目录与256px帧
开发语言·python
长空任鸟飞_阿康1 小时前
如何设计支持 Skills 的 Agent?一套可扩展的四层架构
python·ai·架构·skills
滴啦嘟啦哒1 小时前
【具身笔记】【原理探究】一、对PI05源码的实践笔记
笔记·python·vla·具身
miofly1 小时前
GitHub 今日推荐|elephant-goldfish-model:先审查设计草案再写代码
python·开源·github
云和数据.ChenGuang1 小时前
深入剖析 Python 的 MRO 规则:从 C3 线性化到实战踩坑
开发语言·python·1024程序员节
123_不打狼1 小时前
Squidiff:基于条件扩散模型预测细胞发育与扰动响应
开发语言·python·squidiff
databook1 小时前
用Python DSL 写轻量数据质检工具
python·数据分析