Leetcode 3543. Maximum Weighted K-Edge Path

  • [Leetcode 3543. Maximum Weighted K-Edge Path](#Leetcode 3543. Maximum Weighted K-Edge Path)
    • [1. 解题思路](#1. 解题思路)
    • [2. 代码实现](#2. 代码实现)

1. 解题思路

这一题思路上就是一个遍历的思路,我们只需要考察每一个节点作为起点时,所有长为 k k k的线段的长度,在符合条件的结果当中选出最大值即可。

需要注意的是,由于中间会有大量的重复操作存在,我们需要使用缓存来优化一下执行效率。

2. 代码实现

给出python代码实现如下:

python 复制代码
class Solution:
    def maxWeight(self, n: int, edges: List[List[int]], k: int, t: int) -> int:
        graph = defaultdict(list)
        for u, v, w in edges:
            graph[u].append((v, w))

        @lru_cache(None)
        def dfs(u, k):
            if k == 0:
                return {0}
            if graph[u] == []:
                return set()
            ans = set()
            for v, w in graph[u]:
                nxt_set = dfs(v, k-1)
                for nxt in nxt_set:
                    if nxt + w < t:
                        ans.add(nxt+w)
            return ans
        
        return max(max(dfs(u, k)) if len(dfs(u, k)) > 0 else -1 for u in range(n))

提交代码评测得到:耗时216ms,占用内存48.2MB。

相关推荐
.道阻且长.6 小时前
2.LeetCode算法习题讲解--双指针--复写零
算法·leetcode·职场和发展
To_OC8 小时前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
Tisfy12 小时前
LeetCode 3731.找出缺失的元素:哈希 / 排序
算法·leetcode·哈希算法·排序·哈希表
旖旎夜光13 小时前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
一只齐刘海的猫13 小时前
【Leetcode】乘积最大子数组
算法·leetcode·职场和发展
hold?fish:palm16 小时前
20 旋转图像
c++·算法·leetcode
小南知更鸟17 小时前
【leetcodehot100】leetcode-hot100-20260809更新
算法·leetcode·职场和发展
.道阻且长.20 小时前
1.LeetCode算法习题讲解--双指针--移动零
算法·leetcode·职场和发展
雪碧聊技术20 小时前
力扣 回溯法 | LCR 020. 回文子串
javascript·算法·leetcode
wabs66620 小时前
关于哈希表【力扣454.四数相加II的思考】
数据结构·算法·leetcode·散列表