首页 > 其他分享 >leetcode 每日1题

leetcode 每日1题

时间:2024-07-18 19:10:16浏览次数:13  
标签:int 每日 List length time answer new leetcode

3112. 访问消失节点的最少时间

from heapq import heappop, heappush
from typing import List

class Solution:
    def minimumTime(self, n: int, edges: List[List[int]], disappear: List[int]) -> List[int]:
        # 创建邻接表
        adj = [[] for _ in range(n)]
        for u, v, length in edges:
            adj[u].append((v, length))
            adj[v].append((u, length))

        # 初始化优先队列,开始时只有起点0,时间为0
        pq = [(0, 0)]
        # 初始化答案列表,用于存储从起点到每个点的最短时间,初始设置为-1表示未访问
        answer = [-1] * n
        answer[0] = 0  # 起点的最短时间是0

        while pq:
            # 弹出当前最小的元素
            t, u = heappop(pq)
            # 如果当前点的时间不是已知的最短时间,则跳过(这是因为优先队列中可能有过时的条目)
            if t != answer[u]:
                continue
            # 遍历所有邻接点
            for v, length in adj[u]:
                # 计算到达邻接点v的时间
                new_time = t + length
                # 检查是否在消失时间之前,并且是否比已知时间更短
                if new_time < disappear[v] and (answer[v] == -1 or new_time < answer[v]):
                    # 如果条件满足,更新答案,并将新的时间和点推入优先队列
                    answer[v] = new_time
                    heappush(pq, (new_time, v))
        
        return answer

标签:int,每日,List,length,time,answer,new,leetcode
From: https://www.cnblogs.com/Chiaki17/p/18310248

相关文章

  • 代码随想录算法训练营第42期 第二天 | LeetCode977. 有序数组的平方、209. 长度最小的
    一、977.有序数组的平方学习链接:有序数组的平方状态:暴力解法与双指针都做出来了时间复杂度:暴力解法O()    双指针解法 O()细节之处:暴力解法1       双指针解法1  暴力解法classSolution{publicint[]sortedSquares(int[]nums){......
  • 代码随想录算法训练营第16天|LeetCode112路径总和LeetCode113路径总和iiLeetCode106.
    代码随想录算法训练营Day16代码随想录算法训练营第16天|LeetCode112路径总和LeetCode113路径总和iiLeetCode106.从中序与后序遍历序列构造二叉树LeetCode105.从前序与中序遍历序列构造二叉树目录代码随想录算法训练营前言LeetCode112路径总和,LeetCode113路径......
  • 代码随想录算法训练营第 15 天 |LeetCode110平衡二叉树 LeetCode257二叉树的所有路径
    代码随想录算法训练营Day15代码随想录算法训练营第15天|LeetCode110平衡二叉树LeetCode257二叉树的所有路径LeetCode404左叶子之和LeetCode222完全二叉树节点之和目录代码随想录算法训练营前言LeetCode110平衡二叉树LeetCode257二叉树的所有路径LeetCode404左......
  • leetcode 1459 矩形面积(postgresql)
    需求表:Points±--------------±--------+|ColumnName|Type|±--------------±--------+|id|int||x_value|int||y_value|int|±--------------±--------+id是该表主键每个点都用二维坐标(x_value,y_value)表示写一个SQL语句,报告由表......
  • (nice!!!)LeetCode 3112. 访问消失节点的最少时间(图论、边的dijkstra、堆优化)
    3112.访问消失节点的最少时间思路:节点n的个数非常大,用普通的dijkstra算法对节点进行枚举是会超时的,时间复杂度为0(n^2)。这里边的数量最大为10^5,可以对边使用dijkstra算法+堆优化操作,时间复杂度为0(mlogm)。节点消失问题,只需要加一个判断条件,判断到每个节点的最小时......
  • [leetcode] 字符串 重复的子字符串
    题目:给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。代码:思路1(暴力算法):省略思路2(移动匹配):两个重复的字符串,肯定能组成一个新的s代码boolrepeatedSubstringPattern(strings){strings1=s+s;s1.erase(s1.begin());......
  • GitHub每日最火火火项目(7.17)
    项目名称:aider项目介绍:aider是一个在终端中实现AI结对编程的项目。它能够为开发者提供智能的编程辅助,帮助开发者更高效地完成编程任务。通过与AI的协作,开发者可以获得实时的代码建议、错误修复提示等,从而提高编程效率和质量。项目地址:https://github.com/paul-gauthi......
  • 【LeetCode 0051】【剪枝】N皇后
    N-QueensThen-queenspuzzleistheproblemofplacingnqueensonannxnchessboardsuchthatnotwoqueensattackeachother.Givenanintegern,returnalldistinctsolutionstothen-queenspuzzle.Youmayreturntheanswerinanyorder.Eachsolu......
  • leetcode_189. 轮转数组
    leetcode_189.轮转数组题目描述:给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数。示例1:输入:nums=[1,2,3,4,5,6,7],k=3输出:[5,6,7,1,2,3,4]解释:向右轮转1步:[7,1,2,3,4,5,6]向右轮转2步:[6,7,1,2,3,4,5]向右轮转3步:[......
  • LeetCode-环形链表、环形链表 II
    一、环形链表.-力扣(LeetCode)判断是否有环,使用快慢指针,开始时都指向头节点,快指针每次走两部,慢指针每次走一步,如果在走的过程中,慢指针和快指针相同(也就是快指针和慢指针指向的节点的同)那么就说明这个链表是带环链表;原理: 若是这个链表代换,那么快慢指针一定不会走向NULL;只......