力扣207---课程表(拓扑排序、Java)

题目描述:

你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。

例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。

请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。

示例 1:

输入:numCourses = 2, prerequisites = [[1,0]]

输出:true

解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0 。这是可能的。

示例 2:

输入:numCourses = 2, prerequisites = [[1,0],[0,1]]

输出:false

解释:总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0 ;并且学习课程 0 之前,你还应先完成课程 1 。这是不可能的。

提示:

1 <= numCourses <= 2000

0 <= prerequisites.length <= 5000

prerequisites[i].length == 2

0 <= ai, bi < numCourses

prerequisites[i] 中的所有课程对 互不相同

思路描述:

典型的拓扑排序,直接利用即可。

代码:

java 复制代码
class Solution {
    public boolean canFinish(int numCourses, int[][] prerequisites) {
        int[] countPre=new int[numCourses];//每门课的前置课程个数
        for(int i=0;i<prerequisites.length;i++){
            countPre[prerequisites[i][0]]++;
        }
        for(int i=0;i<countPre.length;i++){
            for(int j=0;j<countPre.length;j++){
                if(countPre[j]==0){
                    for(int k=0;k<prerequisites.length;k++){
                        if(prerequisites[k][1]==j){
                            countPre[prerequisites[k][0]]--;
                        }
                    }
                    countPre[j]=-1;
                    break;
                }
            }
        }
        for(int i=0;i<countPre.length;i++){
            if(countPre[i]!=-1){
                return false;
            }
        }
        return true;
    }
}
相关推荐
源代码•宸几秒前
Golang原理剖析(逃逸分析)
经验分享·后端·算法·面试·golang··内存逃逸
重生之后端学习7 分钟前
25. K 个一组翻转链表
java·数据结构·算法·leetcode·职场和发展
CoderCodingNo14 分钟前
【GESP】C++五级练习题 luogu-P2242 公路维修问题
开发语言·c++·算法
零售ERP菜鸟21 分钟前
IT年度商业计划书框架(精简版)
大数据·人工智能·职场和发展·创业创新·学习方法·业界资讯
不知名XL21 分钟前
day30 动态规划03
算法·动态规划
张祥64228890422 分钟前
线性代数本质笔记十二
人工智能·算法·机器学习
程序员-King.22 分钟前
day157—回溯—括号生成(LeetCode-22)
算法·leetcode·回溯
Σίσυφος190028 分钟前
视觉矩阵 之 单应矩阵
人工智能·算法·矩阵
啊阿狸不会拉杆34 分钟前
《机器学习》第五章-集成学习(Bagging/Boosting)
人工智能·算法·机器学习·计算机视觉·集成学习·boosting
信奥卷王34 分钟前
2025年3月GESPC++四级真题解析(含视频)
算法