Skip to content

Commit f95e192

Browse files
authored
feat: add rust solution to lc problem: No.0362 (#1254)
1 parent 1c3d9d7 commit f95e192

File tree

3 files changed

+100
-0
lines changed

3 files changed

+100
-0
lines changed

solution/0300-0399/0362.Design Hit Counter/README.md

+35
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,41 @@ class HitCounter:
9595
# param_2 = obj.getHits(timestamp)
9696
```
9797

98+
### **Rust**
99+
100+
```rust
101+
use std::{collections::BinaryHeap, cmp::Reverse};
102+
103+
struct HitCounter {
104+
/// A min heap
105+
pq: BinaryHeap<Reverse<i32>>,
106+
}
107+
108+
impl HitCounter {
109+
fn new() -> Self {
110+
Self {
111+
pq: BinaryHeap::new(),
112+
}
113+
}
114+
115+
fn hit(&mut self, timestamp: i32) {
116+
self.pq.push(Reverse(timestamp));
117+
}
118+
119+
fn get_hits(&mut self, timestamp: i32) -> i32 {
120+
while let Some(Reverse(min_elem)) = self.pq.peek() {
121+
if *min_elem <= timestamp - 300 {
122+
self.pq.pop();
123+
} else {
124+
break;
125+
}
126+
}
127+
128+
self.pq.len() as i32
129+
}
130+
}
131+
```
132+
98133
### **Java**
99134

100135
<!-- 这里可写当前语言的特殊实现逻辑 -->

solution/0300-0399/0362.Design Hit Counter/README_EN.md

+35
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,41 @@ class HitCounter:
8484
# param_2 = obj.getHits(timestamp)
8585
```
8686

87+
### **Rust**
88+
89+
```rust
90+
use std::{collections::BinaryHeap, cmp::Reverse};
91+
92+
struct HitCounter {
93+
/// A min heap
94+
pq: BinaryHeap<Reverse<i32>>,
95+
}
96+
97+
impl HitCounter {
98+
fn new() -> Self {
99+
Self {
100+
pq: BinaryHeap::new(),
101+
}
102+
}
103+
104+
fn hit(&mut self, timestamp: i32) {
105+
self.pq.push(Reverse(timestamp));
106+
}
107+
108+
fn get_hits(&mut self, timestamp: i32) -> i32 {
109+
while let Some(Reverse(min_elem)) = self.pq.peek() {
110+
if *min_elem <= timestamp - 300 {
111+
self.pq.pop();
112+
} else {
113+
break;
114+
}
115+
}
116+
117+
self.pq.len() as i32
118+
}
119+
}
120+
```
121+
87122
### **Java**
88123

89124
```java
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
use std::{collections::BinaryHeap, cmp::Reverse};
2+
3+
struct HitCounter {
4+
/// A min heap
5+
pq: BinaryHeap<Reverse<i32>>,
6+
}
7+
8+
impl HitCounter {
9+
fn new() -> Self {
10+
Self {
11+
pq: BinaryHeap::new(),
12+
}
13+
}
14+
15+
fn hit(&mut self, timestamp: i32) {
16+
self.pq.push(Reverse(timestamp));
17+
}
18+
19+
fn get_hits(&mut self, timestamp: i32) -> i32 {
20+
while let Some(Reverse(min_elem)) = self.pq.peek() {
21+
if *min_elem <= timestamp - 300 {
22+
self.pq.pop();
23+
} else {
24+
break;
25+
}
26+
}
27+
28+
self.pq.len() as i32
29+
}
30+
}

0 commit comments

Comments
 (0)