-
Leetcode 3543. Maximum Weighted K-Edge Path
- 1. 解题思路
- 2. 代码实现
- 题目链接:3543. Maximum Weighted K-Edge Path
1. 解题思路
这一题思路上就是一个遍历的思路,我们只需要考察每一个节点作为起点时,所有长为 k k k的线段的长度,在符合条件的结果当中选出最大值即可。
需要注意的是,由于中间会有大量的重复操作存在,我们需要使用缓存来优化一下执行效率。
2. 代码实现
给出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。