fn merge_arrays(arr1: &[i32], arr2: &[i32]) -> Vec<i32> {
let mut merged = Vec::with_capacity(arr1.len() + arr2.len());
let mut i = 0;
let mut j = 0;
// Merge while both slices have elements
while i < arr1.len() && j < arr2.len() {
if arr1[i] < arr2[j] {
merged.push(arr1[i]);
i += 1;
} else {
merged.push(arr2[j]);
j += 1;
}
}
// Append remaining elements
merged.extend_from_slice(&arr1[i..]);
merged.extend_from_slice(&arr2[j..]);
merged
}
fn main() {
let arr1 = vec![1, 3, 5, 7, 8, 9, 9];
let arr2 = vec![2, 3, 4, 5, 6, 9];
let result = merge_arrays(&arr1, &arr2);
println!("{:?}", result);
}
/*
run:
[1, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 9]
*/