Microsoft - Get Course Order
// "static void main" must be defined in a public class. public class Main { public static void main(String[] args) { int[][] info = new int[4][]; info[0] = null; info[1] = new int[] {0}; info[2] = new int[] {1}; info[3] = new int[] {1,0}; int[] res = getCourseOrder(info, 3); for (int i = 0; i<res.length; i++){ System.out.println(res[i]); } } public static int[] getCourseOrder(int[][]courseInfo, int courseToTake){ List<Integer> list = new ArrayList<>(); Queue<Integer> queue = new LinkedList<>(); Set<Integer> set = new HashSet<>(); queue.add(courseToTake); while(!queue.isEmpty()){ int course = queue.poll(); list.add(course); int[] preCourses = courseInfo[course]; if(preCourses != null && preCourses.length>0){ for(int i = 0; i < preCourses.length; i++){ if(!set.contains(preCourses[i])){ queue.add(preCourses[i]); set.add(preCourses[i]); } } } } int[] res = new int[list.size()]; for(int i=0; i<list.size(); i++){ res[i] = list.get(list.size() - i -1); } return res; } }
posted on 2018-04-28 12:57 IncredibleThings 阅读(159) 评论(0) 编辑 收藏 举报