summaryrefslogtreecommitdiff
path: root/04_median-of-two-sorted-arrays
diff options
context:
space:
mode:
Diffstat (limited to '04_median-of-two-sorted-arrays')
-rw-r--r--04_median-of-two-sorted-arrays/Cargo.lock7
-rw-r--r--04_median-of-two-sorted-arrays/src/main.rs27
2 files changed, 33 insertions, 1 deletions
diff --git a/04_median-of-two-sorted-arrays/Cargo.lock b/04_median-of-two-sorted-arrays/Cargo.lock
new file mode 100644
index 0000000..863c51c
--- /dev/null
+++ b/04_median-of-two-sorted-arrays/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "median-of-two-sorted-arrays"
+version = "0.1.0"
diff --git a/04_median-of-two-sorted-arrays/src/main.rs b/04_median-of-two-sorted-arrays/src/main.rs
index e7a11a9..3d914a4 100644
--- a/04_median-of-two-sorted-arrays/src/main.rs
+++ b/04_median-of-two-sorted-arrays/src/main.rs
@@ -1,3 +1,28 @@
fn main() {
- println!("Hello, world!");
+ 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
+ }
}