Design Underground System
设计一个check in 和check out 系统, 然后找出在两个地点所有id的平均时间差.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
class UndergroundSystem { Map<Integer, String> checkIn; // <id, startStation t> Map<String, Map<String, String>> time; // <startStation, <endStation, total count>> public UndergroundSystem() { checkIn = new HashMap<>(); time = new HashMap<>(); } public void checkIn(int id, String stationName, int t) { checkIn.putIfAbsent(id, ""); checkIn.put(id, stationName+" "+t); } public void checkOut(int id, String stationName, int t) { String[] strs = checkIn.get(id).split(" "); time.putIfAbsent(strs[0], new HashMap<String, String>()); time.get(strs[0]).putIfAbsent(stationName, "0 0"); String[] strs1 = time.get(strs[0]).get(stationName).split(" "); Integer total = Integer.valueOf(strs1[0]); Integer count = Integer.valueOf(strs1[1]); count += 1; total += (t - Integer.valueOf(strs[1])); time.get(strs[0]).put(stationName, total +" " + count); } public double getAverageTime(String startStation, String endStation) { String[] strs = time.get(startStation).get(endStation).split(" "); Integer total = Integer.valueOf(strs[0]); Integer count = Integer.valueOf(strs[1]); return (double) total / count; } } /** * Your UndergroundSystem object will be instantiated and called as such: * UndergroundSystem obj = new UndergroundSystem(); * obj.checkIn(id,stationName,t); * obj.checkOut(id,stationName,t); * double param_3 = obj.getAverageTime(startStation,endStation); */ |