Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 4da0ba5

Browse files
solves #359: Logger rate limiter in java
1 parent cf51b3c commit 4da0ba5

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@
301301
| 351 | 🔒 [Android Unlock Patterns](https://leetcode.com/problems/android-unlock-patterns) | | |
302302
| 355 | [Design Twitter](https://leetcode.com/problems/design-twitter) | | |
303303
| 357 | [Count Numbers with Unique Digits](https://leetcode.com/problems/count-numbers-with-unique-digits) | | |
304-
| 359 | 🔒 [Logger Rate Limiter](https://leetcode.com/problems/logger-rate-limiter) | | |
304+
| 359 | 🔒 [Logger Rate Limiter](https://leetcode.com/problems/logger-rate-limiter) | [![Java](assets/java.png)](src/LoggerRateLimiter.java) | |
305305
| 367 | [Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square) | [![Java](assets/java.png)](src/ValidPerfectSquare.java) [![Python](assets/python.png)](python/valid_perfect_square.py) | |
306306
| 374 | [Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower) | [![Java](assets/java.png)](src/GuessNumberHigherOrLower.java) [![Python](assets/python.png)](python/guess_number_higher_or_lower.py) | |
307307
| 380 | [Insert Delete GetRandom O(1)](https://leetcode.com/problems/insert-delete-getrandom-o1) | [![Java](assets/java.png)](src/InsertDeleteGetRandomO1.java) | |

src/LoggerRateLimiter.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// https://leetcode.com/problems/logger-rate-limiter
2+
// N: number of requests made to shouldPrint(), M: total number of different messages
3+
// T: O(N)
4+
// S: O(M)
5+
6+
import java.util.HashMap;
7+
import java.util.Map;
8+
9+
public class LoggerRateLimiter {
10+
}
11+
12+
class Logger {
13+
final Map<String, Integer> messageTimestamps = new HashMap<>();
14+
15+
public boolean shouldPrintMessage(int timestamp, String message) {
16+
if (!messageTimestamps.containsKey(message)) {
17+
messageTimestamps.put(message, timestamp);
18+
return true;
19+
}
20+
21+
if (messageTimestamps.get(message) + 10 > timestamp) {
22+
return false;
23+
}
24+
25+
messageTimestamps.put(message, timestamp);
26+
return true;
27+
}
28+
}

0 commit comments

Comments
 (0)