• 课程安排


        //方法一  入度表(广度优先遍历)
        public boolean canFinish(int numCourses,int[][] prerequisites){
            int[] indegrees = new int[numCourses];
            List<List<Integer>> adjacency = new ArrayList<List<Integer>>();
            Queue<Integer> queue = new LinkedList<>();
            for(int i=0;i<numCourses;i++){
                adjacency.add(new ArrayList<Integer>());
            }
            for(int[] cp:prerequisites){
                indegrees[cp[0]]++;
                adjacency.get(cp[1]).add(cp[0]);
            }
            for(int i=0;i<numCourses;i++){
                if(indegrees[i]==0){
                    queue.add(i);
                }
            }
            while(!queue.isEmpty()){
                int pre = queue.poll();
                numCourses--;
                for(int cur:adjacency.get(pre)){
                    if(--indegrees[cur]==0){
                        queue.add(cur);
                    }
                }
            }
            return numCourses == 0;
        }
    // 方法二  深度优先遍历
        public boolean canFinish2(int numCourses,int[][] prerequisites){
            List<List<Integer>> adjacency = new ArrayList<List<Integer>>();
            for(int i=0;i<numCourses;i++){
                adjacency.add(new ArrayList<Integer>());
            }
            for(int[] cp:prerequisites){
                adjacency.get(cp[1]).add(cp[0]);
            }
            int[] flags = new int[numCourses];
            for(int i=0;i<numCourses;i++){
                if(!dfs(adjacency,flags,i)){
                    return false;
                }
            }
            return true;
        }
        private boolean dfs(List<List<Integer>> adjacency,int[] flags,int i){
            if(flags[i] == 1){
                return false;
            }
            if(flags[i]== -1){
                return true;
            }
            flags[i] = 1;
            for(Integer j:adjacency.get(i)){
                if(!dfs(adjacency, flags, j)){
                    return false;
                }
            }
            flags[i] = -1;
            return true;
        }
  • 相关阅读:
    序列化和反序列化(2)[Serializable] 转
    http错误列表(转)
    公共Webservice
    序列化和反序列化(1)[Serializable]
    序列化中的[NonSerialized]字段 转
    后台调用前台js
    http的请求和响应过程2
    命名规则
    tsql LastIndexOf
    js产生随机数
  • 原文地址:https://www.cnblogs.com/helloworldmybokeyuan/p/13446369.html
Copyright © 2020-2023  润新知