here 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) { ArrayList<Set<Integer>> arrayList = new ArrayList<>(); for (int i = 0; i < numCourses; i++) { arrayList.add(new HashSet<Integer>()); } for (int i = 0; i < prerequisites.length; i++) { arrayList.get(prerequisites[i][1]).add(prerequisites[i][0]); } int[] preNum = new int[numCourses]; for (int i = 0; i < numCourses; i++) { Set<Integer> set = arrayList.get(i); Iterator<Integer> iterator = set.iterator(); while (iterator.hasNext()) { preNum[iterator.next()]++; } } for (int i = 0; i < numCourses; i++) { int j = 0; for (; j < numCourses; j++) { if (preNum[j] == 0) { break; } } if (j == numCourses) { return false; } preNum[j] = -1; Set<Integer> set = arrayList.get(j); Iterator<Integer> iterator = set.iterator(); while (iterator.hasNext()) { preNum[iterator.next()]--; } } return true; } }
相关推荐
java java_leetcode题解之Course Schedule III.java
"University Course Schedule Builder",一款开源的课程日程规划工具,以其独特的优势,为大学提供了定制化、高效且灵活的课表解决方案。 开源软件的一大优势在于其开放源代码,允许用户自由查看、修改和分发代码。...
确定课程列表的可能时间表 这是一项扩展功能,可帮助康涅狄格州立大学的学生选择时间表。 ...该扩展程序然后显示一个新页面,其中显示可用的课程表,确保不存在时间冲突。 然后,学生可以通过选择包括或排除课程的特定...
课程时间表 열어버렸네제인데인데로열어버렸네? 내버린로보보다?...如果在Schedule中插入更多属性或删除某些现有属性,则还需要修改ScheduleList和gui Schedule I / O Form(如ScheduleTable和InputPanel)。
完成的项目。 有些功能并不完全智能,但它们可以工作。 如果它阻止使用程序,请报告错误。 该程序是完全开源的,并使用诺基亚 qt [http://qt.nokia.com/] 制作。 联系以获取更多信息或问题。
3. 在课程注册系统中,定义了类 CourseSchedule 和类 Course,并在类 CourseSchedule 中定义了方法 add(c:Course)和方法 remove(c:Course),则类 CourseSchedule 和类 Course 之间的关系是关联关系。因为类 ...
语言:English 一键导出课程表,并在PeopleSoft网站上提供有用的快捷方式 功能此扩展可帮助学生有效地跟踪他们的课程,最大程度地减少混乱和错过的课程。 它与学校的课程选择网站集成,自动将课程信息解析为重复的...
**ScheduleViz:开源课程日程规划器** ScheduleViz是一个专为大学学生和教育机构设计的开源项目,它提供了一个交互式的、基于时间表数据的课程安排工具。这款工具利用Perl CGI(Common Gateway Interface)脚本来...
语言:English 美化UWaterloo课程表页面! 一个简单的Chrome扩展程序,改善了滑铁卢大学课程表页面的外观。 1.0.7中的新增功能:*扩展名将在新的课程表URL(classes.uwaterloo.ca)上激活。功能包括:*重组的课程搜索...
σ(星期=周一 ∧ 时间=8:00(course schedule)) ⋈ course ``` 5. **查找计算机学院的所有任课老师(姓名):** ``` (σ(院系=计算机(course)) ⋈ teacher) ``` 这些关系代数表达式展示了如何利用数据库的...
例如,可以建立一个名为`CourseSchedule`的表来存储课程信息,其中可能包含以下字段: - `course_id` (课程ID) - `course_name` (课程名称) - `teacher_id` (教师ID) - `semester` (学期) 为了查询特定学期的所有...
改进观看滑铁卢大学课程表的页面 一个简单的Chrome扩展程序,改善了滑铁卢大学课程表页面的外观。 1.0.4中的新增功能:-在某些情况下修复了类具有“封闭部分”的表格渲染-改进了表单上最新术语的计算功能包括:*重组...
python python_leetcode题解之207_Course_Schedule.py
- 解析:因为 CourseSchedule 使用 Course 类,但并不直接拥有或持久化 Course,所以是依赖关系。 8. 正确的说法是( C ) - 答案:活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为。 - ...
CourseSchedule -> Course: Add(c: Course), Remove(c: Course) ``` #### 九、UML中的关联和聚合 - **关联**:表示类之间的关系,可以通过名称、角色和多重性来描述。 - **聚合**(Aggregation):表示类之间的...
因为CourseSchedule类的方法add()和remove()依赖于Course类的对象。 8. **状态图和活动图的对比**:状态图是活动图的一个特例,主要描述一个对象的生命周期,而不是系统的静态方面。两者都描述对象随时间变化的行为...
url = "http://example.com/courseschedule" # 五邑大学课表URL response = requests.get(url) if response.status_code == 200: html_content = response.text else: print("请求失败") ``` 3. **解析HTML...
依赖关系如"CourseSchedule"依赖于"Course",表示课程安排依赖于课程的设置。泛化关系如"交通工具"和"火车",表示火车是交通工具的一种。实现关系如"Control"接口被"TV"和"Radio"类实现,表示这两个类实现了控制的...
可以通过 UML 方法显示表示出 CourseSchedule 类中的成员函数 add 和 remove 的参数是 Course 类的对象的依赖关系。 4.18 院系人员信息系统的 UML 图形表示 可以根据大学院系人员信息系统中的关系描述绘制出相应的...