diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 5fe67cd..ae2c84a 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -178,4 +178,5 @@ mod p35_search_insert_position; mod p74_search_a_2d_matrix; mod p33_search_in_rotated_sorted_array; mod p34_find_first_and_last_position_of_element_in_sorted_array; -mod p153_find_minimum_in_rotated_sorted_array; \ No newline at end of file +mod p153_find_minimum_in_rotated_sorted_array; +mod p215_kth_largest_element_in_an_array; \ No newline at end of file diff --git a/src/problem/p215_kth_largest_element_in_an_array.rs b/src/problem/p215_kth_largest_element_in_an_array.rs new file mode 100644 index 0000000..304d3f0 --- /dev/null +++ b/src/problem/p215_kth_largest_element_in_an_array.rs @@ -0,0 +1,37 @@ +/** + * [215] Kth Largest Element in an Array + */ +pub struct Solution {} + + +// submission codes start here + +impl Solution { + pub fn find_kth_largest(nums: Vec, k: i32) -> i32 { + use std::{cmp::Reverse, collections::BinaryHeap}; + + let k = k as usize; + let mut heap = BinaryHeap::>::with_capacity(k); + + for i in nums { + if heap.len() == k && heap.peek().unwrap().0 < i { + heap.pop(); + heap.push(Reverse(i)); + } else if heap.len() < k { + heap.push(Reverse(i)); + } + } + + heap.pop().unwrap().0 + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_215() {} +}