summaryrefslogtreecommitdiff
path: root/04_median-of-two-sorted-arrays/src/main.rs
blob: 3d914a4feabb7620ac25f647d8414aedc8afb257 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
fn main() {
    let a: Vec<i32> = vec![2,2,4,4];
    let b: Vec<i32> = vec![2,2,2,4,4];
    let median = Solution::find_median_sorted_arrays(a, b);
    println!("{}", &median);
}

struct Solution(());

impl Solution {
    pub fn find_median_sorted_arrays(nums1: Vec<i32>, nums2: Vec<i32>) -> f64 {
        
        // nums1.extend_from_slice(&nums2);
        // instead of extending, chaining & 
        // collecting performs better for some reason
        let mut nums1 = nums1.into_iter().chain(nums2.into_iter()).collect::<Vec<_>>();
        nums1.sort();

        let mut mid = nums1.len() / 2;
        let result: f64 = if nums1.len() % 2 == 0 {
            (nums1[mid - 1] + nums1[mid]) as f64 / 2.0
        } else {
            nums1[mid].into()
        };

        result
    }
}