zoukankan      html  css  js  c++  java
  • [leedcode 207] Course Schedule

    There are a total of n courses you have to take, labeled from 0 to n - 1.

    Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]

    Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?

    For example:

    2, [[1,0]]

    There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.

    2, [[1,0],[0,1]]

    There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.

    public class Solution {
        public boolean canFinish(int numCourses, int[][] prerequisites) {
            //本题是求拓扑图,验证图是否有环,从叶子节点开始求(出度为0的点),如果所有点都能遍历到,则满足条件
            //需要辅助数组,数组的下标代表课程编号,数组的值代表出度
            //queue保存的是出度为0的点,每次向里面添加需要计算个数count,最后结果需要判断count是否等于课程数numCourses
            int []flag=new int[numCourses];
            for(int i=0;i<prerequisites.length;i++){
               
                flag[prerequisites[i][1]]++;
            }
            LinkedList<Integer> queue=new LinkedList<Integer>();
            int count=0;
            for(int i=0;i<numCourses;i++){
                if(flag[i]==0){//出度为0
                    queue.add(i);
                    count++;
                }
            }
            while(!queue.isEmpty()){
                int k=queue.remove();
                for(int i=0;i<prerequisites.length;i++){
                    if(k==prerequisites[i][0]){
                        int l=prerequisites[i][1];
                        flag[l]--;
                        if(flag[l]==0){
                            count++;
                            queue.add(l);
                        }
                    }
                        
                }
                
                
            }
            return count==numCourses;
            
        }
    }
  • 相关阅读:
    R语言修改vector、matrix、dataframe列名
    R语言获取数据框的行数
    R语言的which函数,针对没有符合条件的返回值为integer(0),之后如何判断
    ArrayList总结
    经常涉及到的技术
    今天开始写博客啦!(测试..)
    [摘转] JS 数组合并问题
    t_category
    在 MySql 的 update 语句中使用 case when else end
    JSP 取当前时间
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4703237.html
Copyright © 2011-2022 走看看