Skip to content

Commit

Permalink
median of two-sorted array
Browse files Browse the repository at this point in the history
  • Loading branch information
nt-sivan committed May 19, 2024
1 parent 3f945b8 commit 04d7fc6
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,5 @@
- [2024-05-16 只出现一次的数字](./single-number)
- [2024-05-17 多数元素](./majority-element)
- [2024-05-18 是否存在重复元素距离小于等于k](./check-duplicate-II)
- [2024-05-19 两个有序数组的中位数](./median-of-two-sorted-arrays)

7 changes: 7 additions & 0 deletions median-of-two-sorted-arrays/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions median-of-two-sorted-arrays/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[package]
name = "median-of-two-sorted-arrays"
version = "0.1.0"
edition = "2021"

[dependencies]
6 changes: 6 additions & 0 deletions median-of-two-sorted-arrays/src/main.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
mod solution;
use crate::solution::Solution;
// https://leetcode.cn/problems/median-of-two-sorted-arrays/description/
fn main() {
println!("Hello, world!{}", Solution::find_median_sorted_arrays(vec![1, 3], vec![2]));
}
39 changes: 39 additions & 0 deletions median-of-two-sorted-arrays/src/solution.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
pub struct Solution;
impl Solution {
pub fn find_median_sorted_arrays(nums1: Vec<i32>, nums2: Vec<i32>) -> f64 {
// 首先需要排序,其次才能根据位置进行算中位数
let total_nums = &nums1.len() + &nums2.len();
// 中间位置为奇数
let mut is_one = true;
if total_nums % 2 == 0 {
// =偶数
is_one = false;
}
let mut merged = Vec::with_capacity(nums1.len() + nums2.len());
let mut i = 0;
let mut j = 0;

while i < nums1.len() && j < nums2.len() {
if nums1[i] < nums2[j] {
merged.push(nums1[i]);
i += 1;
} else {
merged.push(nums2[j]);
j += 1;
}
}

merged.extend_from_slice(&nums1[i..]);
merged.extend_from_slice(&nums2[j..]);

if total_nums > 0 {
if is_one {
return merged[total_nums /2 ] as f64/ 1.0;
}

return (merged[total_nums/2] + merged[total_nums/2 -1]) as f64/2.0;
}
0.0

}
}
1 change: 1 addition & 0 deletions median-of-two-sorted-arrays/title.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2024-05-19 两个有序数组的中位数

0 comments on commit 04d7fc6

Please sign in to comment.