Leetcode 207. Course Schedule
来源:互联网 发布:h5手机游戏源码 编辑:程序博客网 时间:2024/05/29 13:20
Leetcode 207. Course Schedule
TLE 以下代码,采用dfs来判断是否会出现循环
import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { //fast and slow point. //dfs. if(numCourses<=1) return true; List<Set<Integer>> graph = new ArrayList<Set<Integer>>(); for(int i=0;i<numCourses;i++) graph.add(new HashSet<Integer>()); for(int[] edge:prerequisites){ graph.get(edge[1]).add(edge[0]); } List<Integer> early = new ArrayList<Integer>(); for(int i=0;i<numCourses;i++){ if(graph.get(i).size()>0) early.add(i); } boolean res = true; // no circle for(int i:early){ List<Integer> tmp = new ArrayList<Integer>();res = iscircle(i,graph,tmp);if(!res){ // exists circlebreak;} } return res; }private boolean iscircle(int i, List<Set<Integer>> graph, List<Integer> tmp) {// TODO Auto-generated method stub//tmp.add(i);if(tmp.contains(i)) return false;// two point: k,h// int k=i, h=i;boolean res = true;Set<Integer> nexti = new HashSet<Integer>(graph.get(i));for(int j: nexti){graph.get(i).remove(j);tmp.add(i);res = iscircle(j,graph,tmp); //dfsgraph.get(i).add(j);tmp.remove(tmp.size()-1);if(!res){break;}}return res;}}
import java.util.ArrayList;import java.util.HashSet;import java.util.List;import java.util.Set;public class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { //fast and slow point. //dfs. if(numCourses<=1) return true; List<Set<Integer>> graph = new ArrayList<Set<Integer>>(); for(int i=0;i<numCourses;i++) graph.add(new HashSet<Integer>()); for(int[] edge:prerequisites){ graph.get(edge[1]).add(edge[0]); } List<Integer> early = new ArrayList<Integer>(); for(int i=0;i<numCourses;i++){ if(graph.get(i).size()>0) early.add(i); } boolean res = true; // no circle for(int i:early){ List<Integer> tmp = new ArrayList<Integer>();res = iscircle(i,graph,tmp);if(!res){ // exists circlebreak;} } return res; }private boolean iscircle(int i, List<Set<Integer>> graph, List<Integer> tmp) {// TODO Auto-generated method stub//tmp.add(i);if(tmp.contains(i)) return false;// two point: k,h// int k=i, h=i;boolean res = true;for(int j: graph.get(i)){//graph.get(i).remove(j);tmp.add(i);res = iscircle(j,graph,tmp); //dfstmp.remove(tmp.size()-1);if(!res){break;}}return res;}}
easy bfs java solution
import java.util.ArrayList;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Queue;import java.util.Set;public class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) { int[][] matrix = new int[numCourses][numCourses]; // i -> j int[] indegree = new int[numCourses]; for (int i=0; i<prerequisites.length; i++) { int ready = prerequisites[i][0]; int pre = prerequisites[i][1]; if (matrix[pre][ready] == 0) indegree[ready]++; //duplicate case matrix[pre][ready] = 1; } int count = 0; Queue<Integer> queue = new LinkedList(); for (int i=0; i<indegree.length; i++) { if (indegree[i] == 0) queue.offer(i); } while(!queue.isEmpty()) { int course = queue.poll(); count++; for (int i=0; i<numCourses; i++) { if (matrix[course][i] != 0) { if (--indegree[i] == 0) queue.offer(i); } } } return count == numCourses;}}
0 0
- [leetcode] 207.Course Schedule
- Leetcode 207. Course Schedule
- 207. Course Schedule LeetCode
- leetcode 207. Course Schedule
- leetcode.207. Course Schedule
- LeetCode 207. Course Schedule
- 【LeetCode】207. Course Schedule
- [leetcode] 207. Course Schedule
- leetcode-207. Course Schedule
- leetcode 207. Course Schedule
- [LeetCode] 207. Course Schedule
- 【Leetcode】207. Course Schedule
- Leetcode 207. Course Schedule
- LeetCode 207.Course Schedule
- Leetcode 207. Course Schedule
- Leetcode 207. Course Schedule
- [LeetCode]207. Course Schedule
- Leetcode 207. Course Schedule
- 2016年蓝桥杯A组java第六题
- java基础(6)--面向对象
- 文件操作
- HashMap和ConcurrentHashMap的区别,HashMap的底层源码。
- tomcat 开机自启
- Leetcode 207. Course Schedule
- tomcat中Web应用程序的部署方式
- 读书摘要
- 【C语言简单说】十三:变量的生命周期
- Bootstrap 分页
- NHibernate之旅(13):初探立即加载机制
- 1022. Digital Library (30)
- react-redux学习
- NHibernate之旅(14):探索NHibernate中使用视图