zoukankan      html  css  js  c++  java
  • 拓扑排序

    210. 课程表 II

    拓扑排序,

    BFS

    对于入度为0的节点入队列。

    出栈时,记录,将对应的节点入度减一。

    判断出栈的节点是否是全部节点。

      public int[] findOrder(int numCourses, int[][] prerequisites) {
            int[] input = new int[numCourses];
            int[] res = new int[numCourses];
            int index = 0;
            Queue<Integer> queue = new LinkedList<>();
            for (int [] edge : prerequisites) {
                input[edge[0]] ++;
            }
            for (int i = 0 ;i <numCourses ;i++) {
                if(input[i] == 0) queue.add(i);
                    
            }
            while(!queue.isEmpty()) {
                int courses = queue.poll();
                res[index++] =courses;
                for (int [] edge : prerequisites) {
                    if(edge[1] == courses) {
                        input[edge[0]] --;
                        if(input[edge[0]] == 0) queue.add(edge[0]);
                    }
                } 
            }
            if(index !=numCourses)    return new  int[] {};
            return res;    
            }
    View Code

    DFS     将队列换成栈即可。

    虽然效率不高,但能过。

  • 相关阅读:
    测试之美-1
    杯子测试
    性能面试(四)
    性能面试(二)
    性能面试(三)
    性能面试(一)
    解决用户名冲突
    版本冲突
    JQuery Easy UI 简介
    Fork
  • 原文地址:https://www.cnblogs.com/codinghard/p/12906646.html
Copyright © 2011-2022 走看看