Skip to content

Commit df80a19

Browse files
authored
Update Solution2.rs
1 parent 81db9ca commit df80a19

File tree

1 file changed

+8
-22
lines changed
  • solution/0200-0299/0215.Kth Largest Element in an Array

1 file changed

+8
-22
lines changed
Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,14 @@
1-
use rand::Rng;
1+
use std::collections::BinaryHeap;
22

33
impl Solution {
4-
pub fn find_kth_largest(mut nums: Vec<i32>, k: i32) -> i32 {
5-
let k = k as usize;
6-
let n = nums.len();
7-
let mut l = 0;
8-
let mut r = n;
9-
while l <= k - 1 && l < r {
10-
nums.swap(l, rand::thread_rng().gen_range(l, r));
11-
let num = nums[l];
12-
let mut mark = l;
13-
for i in l..r {
14-
if nums[i] > num {
15-
mark += 1;
16-
nums.swap(i, mark);
17-
}
18-
}
19-
nums.swap(l, mark);
20-
if mark + 1 <= k {
21-
l = mark + 1;
22-
} else {
23-
r = mark;
4+
pub fn find_kth_largest(nums: Vec<i32>, k: i32) -> i32 {
5+
let mut minQ = BinaryHeap::new();
6+
for &x in nums.iter() {
7+
minQ.push(-x);
8+
if minQ.len() > k as usize {
9+
minQ.pop();
2410
}
2511
}
26-
nums[k - 1]
12+
-minQ.peek().unwrap()
2713
}
2814
}

0 commit comments

Comments
 (0)