[LeetCode]Course Schedele II
来源:互联网 发布:电脑杀毒清理软件 编辑:程序博客网 时间:2024/04/30 04:51
树图相关问题,考虑抽象node到class,其中一般要包含node的val,前驱后继的list,是否visit。
本题深搜,遍历每个的前驱,如果成环则非法,不成环则合法,同时将res[N++]置为当前node的val。
https://leetcode.com/problems/course-schedule-ii/
public class Solution { private int N = 0; public int[] findOrder(int numCourses, int[][] prerequisites) { int[] res = new int[numCourses]; Course[] courses = new Course[numCourses]; for (int i = 0; i < numCourses; i++) courses[i] = new Course(i); for (int i = 0; i < prerequisites.length; i++) { courses[prerequisites[i][0]].add(courses[prerequisites[i][1]]); } for (int i = 0; i < numCourses; i++) { if (isCycle(courses[i], res)) return new int[0]; } return res; } private boolean isCycle(Course course, int[] res) { if (course.test) return false; if (course.visit) return true; course.visit = true; for (Course c : course.pre) { if (isCycle(c, res)) return true; } res[N++] = course.label; course.test = true; return false; } class Course { boolean test = false; boolean visit = false; int label; ArrayList<Course> pre = new ArrayList<>(); public Course(int label) { this.label = label; } public void add(Course c) { pre.add(c); } }}
0 0
- [LeetCode]Course Schedele II
- [leetcode]Course Schedule II
- leetcode - Course Schedule II
- LeetCode Course Schedule II
- [leetcode] Course Schedule II
- leetcode:Course Schedule II
- [LeetCode] Course Schedule II
- Leetcode Course Schedule II
- 【leetcode】Course Schedule II
- leetcode Course Schedule II
- LeetCode Course Schedule II
- [leetcode] Course Schedule II
- #leetcode#Course Schedule II
- LeetCode Course Schedule II
- leetcode Course Schedule II
- Course Schedule II -- leetcode
- Leetcode: Course Schedule II
- [Leetcode] Course Schedule II
- 学习笔记---初识指针
- 关于PHP数组及关联数组排序的函数讲解
- 数据库引擎与字符集的设置
- wait不一定需要notify
- AC代码
- [LeetCode]Course Schedele II
- no-install mysql安装及无法启动问题(5.7.16)
- poj1006_Biorhythms_扩展欧几里得_中国剩余定理
- SVG 复用(defs、symbol、use)
- AsyncTask
- 字典树(Trie)
- 手绘随笔:随笔(五)
- iOS开发- 常用第三方库整理
- 画图理解软件工程-UML统一建模语言-用例图(三)