LeetCode:207课程表

java 复制代码
class Solution {
    public boolean canFinish(int numCourses, int[][] prerequisites) {
        //记录入度
        int[] inDegree = new int[numCourses];
        //建立邻接表
        List<List<Integer>> adjacencyList = new ArrayList<>();
        for(int i = 0; i < numCourses; i++){
            adjacencyList.add(new ArrayList<>());
        }
        //建图,pre[0]是想学的课,pre[1]是前置课
        for(int[] pre : prerequisites){
            int courseToTake = pre[0];
            int prerequisite = pre[1];

            inDegree[courseToTake]++;
            //学完想学的课的前置课程,才能将想学的课加入到邻接表中相应位置
            adjacencyList.get(prerequisite).add(courseToTake);
        }
        //将没有前置课程的课放入到队列中
        Queue<Integer> queue = new LinkedList<>();
        for(int i = 0; i < numCourses; i++){
            if(inDegree[i] == 0){
                queue.offer(i);
            }
        }

        int finishedCourses = 0;

        while(!queue.isEmpty()){
            int currentCourse = queue.poll();
            finishedCourses++;
            //找到这门课程能解锁的后续课程
            for(int nextCourse : adjacencyList.get(currentCourse)){
                inDegree[nextCourse]--;

                if(inDegree[nextCourse] == 0){
                    queue.offer(nextCourse);
                }
            }
        }
        return finishedCourses == numCourses;
    }
}

解题思路:

建立邻接表

建图将课程的关系放入进邻接表中

将没有前置课程的课程放入进队列中

逻辑处理,找到当前课程的后续课程,将入度-1并进行判断,入度为0的时候,加入队列

相关推荐
lzhdim4 小时前
AI的分类
人工智能·算法·机器学习·分类·数据挖掘
凤凰院凶涛QAQ7 小时前
《Java版数据结构 & 集合类剖析》Map & Set & 反射:“从哈希碰撞到红黑树转换,反射帮你扒开 HashMap 的桶数组看个究竟”
java·数据结构·算法
H.莓飛7 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1148 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
w_zero_one9 小时前
算法--模拟
java·数据结构·算法
Javatutouhouduan9 小时前
阿里1658页Java面试题总结(含答案)
java·高并发·java面试·java面试题·后端开发·java程序员·java八股文
秋天的怀念_David9 小时前
算法一千零一夜 · 第十三夜 幻方,武侠世界里的数学迷宫
java·程序人生·算法
lll235269177910 小时前
HR如何快速整理面试沟通内容?
面试·职场和发展
专业程序开发源10 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
零售校长10 小时前
西湖区零售门店店长面试怎么准备
面试·职场和发展·零售