Skip to content

Commit a7bb3e8

Browse files
authored
Merge pull request #2211 from Jay-0331/rust/0703-kth-largest-element-in-a-stream
Create: 0703-kth-largest-element-in-a-stream.rs
2 parents dee8fab + f88dbc6 commit a7bb3e8

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
use std::{cmp::Reverse, collections::BinaryHeap};
2+
3+
struct KthLargest {
4+
min_heap: BinaryHeap<Reverse<i32>>,
5+
size: usize,
6+
}
7+
8+
impl KthLargest {
9+
fn new(k: i32, nums: Vec<i32>) -> Self {
10+
let mut kth_largest = KthLargest {
11+
min_heap: BinaryHeap::new(),
12+
size: k as usize,
13+
};
14+
for n in nums {
15+
kth_largest.add(n);
16+
}
17+
kth_largest
18+
}
19+
20+
fn add(&mut self, val: i32) -> i32 {
21+
self.min_heap.push(Reverse(val));
22+
if self.min_heap.len() > self.size {
23+
self.min_heap.pop();
24+
}
25+
26+
match self.min_heap.peek() {
27+
Some(Reverse(min_val)) => *min_val,
28+
_ => -1,
29+
}
30+
}
31+
}

0 commit comments

Comments
 (0)