|
4 | 4 | import java.util.LinkedList;
|
5 | 5 | import java.util.List;
|
6 | 6 |
|
7 |
| -/** |
8 |
| - * 635. Design Log Storage System |
9 |
| - * |
10 |
| - * You are given several logs that each log contains a unique id and timestamp. |
11 |
| - * Timestamp is a string that has the following format: Year:Month:Day:Hour:Minute:Second, |
12 |
| - * for example, 2017:01:01:23:59:59. All domains are zero-padded decimal numbers. |
13 |
| - * Design a log storage system to implement the following functions: |
14 |
| -
|
15 |
| - void Put(int id, string timestamp): Given a log's unique id and timestamp, store the log in your storage system. |
16 |
| -
|
17 |
| - int[] Retrieve(String start, String end, String granularity): |
18 |
| - Return the id of logs whose timestamps are within the range from start to end. |
19 |
| - Start and end all have the same format as timestamp. |
20 |
| - However, granularity means the time level for consideration. |
21 |
| - For example, start = "2017:01:01:23:59:59", end = "2017:01:02:23:59:59", granularity = "Day", |
22 |
| - it means that we need to find the logs within the range from Jan. 1st 2017 to Jan. 2nd 2017. |
23 |
| -
|
24 |
| - Example 1: |
25 |
| - put(1, "2017:01:01:23:59:59"); |
26 |
| - put(2, "2017:01:01:22:59:59"); |
27 |
| - put(3, "2016:01:01:00:00:00"); |
28 |
| - retrieve("2016:01:01:01:01:01","2017:01:01:23:00:00","Year"); // return [1,2,3], because you need to return all logs within 2016 and 2017. |
29 |
| - retrieve("2016:01:01:01:01:01","2017:01:01:23:00:00","Hour"); // return [1,2], because you need to return all logs start from 2016:01:01:01 to 2017:01:01:23, where log 3 is left outside the range. |
30 |
| -
|
31 |
| - Note: |
32 |
| - There will be at most 300 operations of Put or Retrieve. |
33 |
| - Year ranges from [2000,2017]. Hour ranges from [00,23]. |
34 |
| - Output for Retrieve has no order required. |
35 |
| - */ |
36 | 7 | public class _635 {
|
37 | 8 |
|
38 | 9 | public static class Solution1 {
|
|
0 commit comments