File tree Expand file tree Collapse file tree 1 file changed +8
-22
lines changed
solution/0200-0299/0215.Kth Largest Element in an Array Expand file tree Collapse file tree 1 file changed +8
-22
lines changed Original file line number Diff line number Diff line change 1
- use rand :: Rng ;
1
+ use std :: collections :: BinaryHeap ;
2
2
3
3
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 ( ) ;
24
10
}
25
11
}
26
- nums [ k - 1 ]
12
+ -minQ . peek ( ) . unwrap ( )
27
13
}
28
14
}
You can’t perform that action at this time.
0 commit comments