@@ -717,4 +717,60 @@ private Point global_origin = null;
717
717
private int getDistance(Point a, Point b) {
718
718
return (a. x - b. x) * (a. x - b. x) + (a. y - b. y) * (a. y - b. y);
719
719
}
720
+
721
+
722
+
723
+ public int [] findOrder(int numCourses, int [][] prerequisites) {
724
+ // write your code here
725
+
726
+ HashMap<Integer , List<Integer > > graph= mapping(numCourses, prerequisites);
727
+
728
+ Map<Integer , Integer > indegreeMap = inDegree(numCourses,graph);
729
+
730
+ Queue<Integer > myQ= new LinkedList<> ();
731
+ int re[] = new int [numCourses];
732
+ int count = numCourses - 1 ;
733
+
734
+ for (int i = 0 ; i < numCourses; i++ ){
735
+ if (! indegreeMap. containsKey(i)){
736
+ myQ. offer(i);
737
+ re[count-- ] = i;
738
+ }
739
+ }
740
+
741
+ while (! myQ. isEmpty()){
742
+
743
+ Integer temp = myQ. poll();
744
+ for (Integer item: graph. get(temp)){
745
+ indegreeMap. put(item, indegreeMap. get(item) - 1 );
746
+
747
+ if ( indegreeMap. get(item) == 0 ){
748
+ myQ. offer(item);
749
+ re[count-- ] = item;
750
+ }
751
+ }
752
+
753
+ }
754
+
755
+ if (count != - 1 ){
756
+ return new int [0 ];
757
+ }
758
+
759
+ return re;
760
+
761
+ }
762
+
763
+ private HashMap<Integer , List<Integer > > mapping(int numCourses, int [][] prerequisites){
764
+
765
+ HashMap<Integer , List<Integer > > map = new HashMap<> ();
766
+ for (int i = 0 ; i < numCourses; i++ ) {
767
+ map. put(i, new ArrayList<> ());
768
+ }
769
+ for (int i = 0 ; i < prerequisites. length; i++ ) {
770
+ int cur = prerequisites[i][0 ];
771
+ int pre = prerequisites[i][1 ];
772
+ map. get(cur). add(pre);
773
+ }
774
+ return map;
775
+ }
720
776
```
0 commit comments