LeetCode【207】课程表

题目:

思路:

https://www.jianshu.com/p/25868371ddfc/

代码:

java 复制代码
public boolean canFinish(int numCourses, int[][] prerequisites) {
        // 入度
        int[] indegress = new int[numCourses];

        // 每个点对应的边,出边
        Map<Integer, List<Integer>> adjacency = new HashMap<>();

        Queue<Integer> queue = new LinkedList<>();

        for (int i = 0; i < numCourses; i++) {
            adjacency.put(i, new ArrayList<>());
        }

        for (int[] cp : prerequisites) {
            indegress[cp[0]]++;
            adjacency.get(cp[1]).add(cp[0]);
        }

        for (int i = 0; i < numCourses; i++) {
            if (indegress[i] == 0) {
                queue.offer(i);
            }
        }

        // BFS
        while (!queue.isEmpty()) {
            Integer pre = queue.poll();
            numCourses--;
            for (int cur : adjacency.get(pre)) {
                if (--indegress[cur] == 0) {
                    queue.offer(cur);
                }
            }
        }

        return numCourses == 0;
    }
相关推荐
谙弆悕博士几秒前
【附C源码】C语言实现散列表
c语言·开发语言·数据结构·算法·散列表·数据结构与算法
kkeeper~2 分钟前
0基础C语言积跬步之深入理解指针(5上)
c语言·开发语言·算法
a11177610 分钟前
边缘设备3DGS-SLAM算法对比实验报告
算法·3d
AI人工智能+电脑小能手11 分钟前
【大白话说Java面试题 第54题】【JVM篇】第14题:什么是可达性分析算法?
java·jvm·算法·面试
AI人工智能+电脑小能手15 分钟前
【大白话说Java面试题 第55题】【JVM篇】第15题:JVM有哪些垃圾收集算法?
java·jvm·算法·面试
Lucky_ldy30 分钟前
C语言学习: 自定义类型—联合和枚举
c语言·学习·算法
gumichef30 分钟前
栈和队列(2)
数据结构·算法·链表
进击的荆棘32 分钟前
递归、搜索与回溯——综合(下)
c++·算法·leetcode·深度优先·dfs
不知名的忻33 分钟前
归并排序(Java)
java·算法·排序算法
YUDAMENGNIUBI4 小时前
day20_逻辑回归
算法·机器学习·逻辑回归