Skip to content

Commit bd8d52a

Browse files
Merge pull request #2703 from leahjia/1396-design-underground-system
create 1396-design-underground-system.java
2 parents 4c90ce5 + d147513 commit bd8d52a

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

Diff for: java/1396-design-underground-system.java

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class UndergroundSystem {
2+
// id, src, time
3+
Map<Integer, Pair<String, Integer>> entries;
4+
// src, dest, int[total time, number of travels]
5+
Map<String, Map<String, int[]>> times;
6+
7+
public UndergroundSystem() {
8+
this.entries = new HashMap<>();
9+
this.times = new HashMap<>();
10+
}
11+
12+
public void checkIn(int id, String stationName, int t) {
13+
entries.put(id, new Pair<>(stationName, t));
14+
}
15+
16+
public void checkOut(int id, String dest, int t) {
17+
Pair<String, Integer> entry = entries.get(id);
18+
String src = entry.getKey();
19+
int duration = t - entry.getValue();
20+
21+
Map<String, int[]> city = times.getOrDefault(src, new HashMap<>());
22+
int[] total = city.getOrDefault(dest, new int[2]);
23+
total[0] += duration;
24+
total[1]++;
25+
city.put(dest, total);
26+
times.put(src, city);
27+
}
28+
29+
public double getAverageTime(String startStation, String endStation) {
30+
int[] total = times.get(startStation).get(endStation);
31+
return 1.0 * total[0] / total[1];
32+
}
33+
}
34+
35+
/**
36+
* Your UndergroundSystem object will be instantiated and called as such:
37+
* UndergroundSystem obj = new UndergroundSystem();
38+
* obj.checkIn(id,stationName,t);
39+
* obj.checkOut(id,stationName,t);
40+
* double param_3 = obj.getAverageTime(startStation,endStation);
41+
*/

0 commit comments

Comments
 (0)