/
DesignHitCounter.java
47 lines (43 loc) · 1.36 KB
/
DesignHitCounter.java
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
41
42
43
44
45
46
47
import java.util.*;
class DesignHitCounter{
public static void main(String[] args) {
HitCounter hitCounter = new HitCounter();
hitCounter.hit(1);
hitCounter.hit(2);
hitCounter.hit(3);
System.out.println(hitCounter.getHits(4));
hitCounter.hit(300);
System.out.println(hitCounter.getHits(300));
System.out.println(hitCounter.getHits(301));
}
}
class HitCounter {
Map<Integer, Integer> map;
// HashSet<Integer> set;
/** Initialize your data structure here. */
public HitCounter() {
// set = new HashSet<>();
map = new HashMap<>();
}
/** Record a hit.
@param timestamp - The current timestamp (in seconds granularity). */
public void hit(int timestamp) {
map.put(timestamp,map.getOrDefault(timestamp,0)+1);
// set.add(timestamp);
// System.out.println(set);
}
/** Return the number of hits in the past 5 minutes.
@param timestamp - The current timestamp (in seconds granularity). */
public int getHits(int timestamp) {
int minRange = timestamp -300 + 1;
// System.out.println("minRange =" + minRange);
int sum =0;
for(int i = Math.max(0,minRange); i <= timestamp; i++){
// if(set.contains(i)){
if(map.containsKey(i)){
sum+=map.get(i);
}
}
return sum;
}
}