1+
2+ var UndergroundSystem = function ( ) {
3+ this . in = new Map ( ) ;
4+ this . check = new Map ( ) ;
5+ } ;
6+
7+ /**
8+ * @param {number } id
9+ * @param {string } stationName
10+ * @param {number } t
11+ * @return {void }
12+ */
13+ UndergroundSystem . prototype . checkIn = function ( id , stationName , t ) {
14+ this . in . set ( id , [ stationName , t ] ) ;
15+ } ;
16+
17+ /**
18+ * @param {number } id
19+ * @param {string } stationName
20+ * @param {number } t
21+ * @return {void }
22+ */
23+ UndergroundSystem . prototype . checkOut = function ( id , stationName , t ) {
24+ const [ a , b ] = this . in . get ( id ) ;
25+ const key = a + ':' + stationName ;
26+ const check = this . check . get ( key ) ;
27+ if ( check ) {
28+ this . check . set ( key , [ t - b + check [ 0 ] , 1 + check [ 1 ] ] ) ;
29+ } else {
30+ this . check . set ( key , [ t - b , 1 ] ) ;
31+ }
32+ } ;
33+
34+ /**
35+ * @param {string } startStation
36+ * @param {string } endStation
37+ * @return {number }
38+ */
39+ UndergroundSystem . prototype . getAverageTime = function ( startStation , endStation ) {
40+ const key = startStation + ':' + endStation ;
41+ const check = this . check . get ( key ) ;
42+ if ( ! check ) {
43+ return 0 ;
44+ } else {
45+ return check [ 0 ] / check [ 1 ] ;
46+ }
47+ } ;
48+
49+ /**
50+ * Your UndergroundSystem object will be instantiated and called as such:
51+ * var obj = new UndergroundSystem()
52+ * obj.checkIn(id,stationName,t)
53+ * obj.checkOut(id,stationName,t)
54+ * var param_3 = obj.getAverageTime(startStation,endStation)
55+ */
0 commit comments