【每日一题Day279】LC2050并行课程 III | 拓扑排序

简介: 【每日一题Day279】LC2050并行课程 III | 拓扑排序

并行课程 III【LC2050】

给你一个整数 n ,表示有 n 节课,课程编号从 1n 。同时给你一个二维整数数组 relations ,其中 relations[j] = [prevCoursej, nextCoursej]表示课程 prevCoursej 必须在课程 nextCoursej 之前 完成(先修课的关系)。同时给你一个下标从 0 开始的整数数组 time ,其中 time[i] 表示完成第 (i+1) 门课程需要花费的 月份 数。

请你根据以下规则算出完成所有课程所需要的 最少 月份数:

  • 如果一门课的所有先修课都已经完成,你可以在 任意 时间开始这门课程。
  • 你可以 同时任意门课程

请你返回完成所有课程所需要的 最少 月份数。

**注意:**测试数据保证一定可以完成所有课程(也就是先修课的关系构成一个有向无环图)。

image.png

class Solution {
    public int minimumTime(int n, int[][] relations, int[] time) {
        List<Integer>[] g = new List[n];
        Arrays.setAll(g, e -> new ArrayList<>());
        int[] costs = new int[n];
        int[] inDeg = new int[n];
        Deque<Integer> queue = new LinkedList<>();
        // 邻接表
        for (int[] relation : relations){
            int u = relation[0] - 1, v = relation[1] - 1;
            g[u].add(v);
            inDeg[v]++;
        }
        // dp计算最少月份数 修完某课程的最少月份数为其先修课的最大时间+其完成需要的时间
        // dp[v] = time[v] + max(dp[u]);
        int res = 0;        
        // 入度
        for (int i = 0; i < n; i++){
            if (inDeg[i] == 0){
                queue.addLast(i);
            }
        }
        // 拓扑排序
        while (!queue.isEmpty()){
            int u = queue.pollFirst();
            costs[u] += time[u];
            res = Math.max(res, costs[u]);
            // order[index++] = u;
            for (int v : g[u]){
                costs[v] = Math.max(costs[v], costs[u]);
                if (--inDeg[v] == 0){
                    queue.addLast(v);
                }
            }             
        }
        return res;
    }
}

image.png

目录
相关文章
|
9天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23434 9
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
13天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
4491 15
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
14天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
5403 13
|
1月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
24140 65
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)