File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ import java .util .*;
2+
3+ class Solution {
4+ private String [][] tickets ;
5+ private boolean [] visited ;
6+ private List <List <String >> pathList ;
7+
8+ public String [] solution (String [][] _tickets ) {
9+ tickets = _tickets ;
10+ visited = new boolean [tickets .length ];
11+ pathList = new ArrayList <>();
12+ List <String > path = new ArrayList <>();
13+ path .add ("ICN" );
14+ path = dfs (path , "ICN" );
15+ Collections .sort (pathList , (o1 , o2 ) -> {
16+ for (int i =0 ; i <o1 .size (); i ++) {
17+ String s1 = o1 .get (i );
18+ String s2 = o2 .get (i );
19+ if (!s1 .equals (s2 )) {
20+ return s1 .compareTo (s2 );
21+ }
22+ }
23+ return 0 ;
24+ });
25+ String [] answer = pathList .get (0 ).stream ().toArray (String []::new );
26+ return answer ;
27+ }
28+
29+ public List <String > dfs (List <String > path , String now ) {
30+ if (path .size () == tickets .length +1 ) {
31+ pathList .add (new ArrayList <String >(path ));
32+ return path ;
33+ }
34+
35+ for (int i =0 ; i <tickets .length ; i ++) {
36+ String v1 = tickets [i ][0 ];
37+ String v2 = tickets [i ][1 ];
38+ if (v1 .equals (now ) && !visited [i ]) {
39+ path .add (v2 );
40+ visited [i ] = true ;
41+ dfs (path , v2 );
42+ visited [i ] = false ;
43+ path .remove (path .size ()-1 );
44+ }
45+ }
46+ return path ;
47+ }
48+ }
You can’t perform that action at this time.
0 commit comments