Skip to content

Commit 3e4682b

Browse files
committed
Completed 'Merge Sorted Array'
1 parent ebb0948 commit 3e4682b

File tree

3 files changed

+77
-0
lines changed

3 files changed

+77
-0
lines changed

Readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
- <span>191. Number of 1 Bits</span>
1818
- **Arrays**
1919
- <span>27. Remove Element</span>
20+
- <span>88. Merge Sorted Array</span>
2021
- **Strings**
2122
- <span>13. Roman to Integer</span>
2223
- <span>67. Add Binary</span>

src/array/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
pub mod p0027_remove_element;
2+
pub mod p0088_merge_sorted_array;
23

34
pub fn run() {}
45

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
* Problem: 88. Merge Sorted Array (Easy)
3+
* URL: https://leetcode.com/problems/merge-sorted-array/
4+
*
5+
* Runtime: 0 ms (100%)
6+
* Memory Usage: 2.02 MB (67.99%)
7+
*/
8+
9+
pub fn solve(nums1: &mut Vec<i32>, mut m: usize, nums2: Vec<i32>, mut n: usize) {
10+
// let mut pos: usize = (m+n).try_into().unwrap(); // Uses more memory
11+
12+
let mut pos = (m+n) as usize; // insert_position
13+
14+
while n>0 {
15+
if m>0 && nums1[m-1] > nums2[n-1] {
16+
nums1[pos-1] = nums1[m-1];
17+
m -= 1;
18+
} else {
19+
nums1[pos-1] = nums2[n-1];
20+
n -= 1;
21+
}
22+
23+
pos -= 1;
24+
}
25+
26+
// Consume remaining nums2 elements
27+
// while n>0 {
28+
// nums1[pos-1] = nums2[n-1];
29+
// n -= 1;
30+
// pos -= 1;
31+
// }
32+
}
33+
34+
#[cfg(test)]
35+
mod template_tests {
36+
use super::*;
37+
38+
#[test]
39+
fn happy_path() {
40+
let mut arr = vec![1,2,3,0,0,0];
41+
42+
solve(&mut arr, 3, vec![2,5,6], 3);
43+
44+
assert_eq!(arr, vec![1,2,2,3,5,6]);
45+
}
46+
47+
#[test]
48+
fn nums1_greater_than_nums2() {
49+
let mut arr = vec![4,5,6,0,0,0];
50+
51+
solve(&mut arr, 3, vec![1,2,3], 3);
52+
53+
assert_eq!(arr, vec![1,2,3,4,5,6]);
54+
}
55+
56+
#[test]
57+
fn no_elements_nums1() {
58+
let mut arr = vec![0];
59+
60+
solve(&mut arr, 0, vec![1], 1);
61+
62+
assert_eq!(arr, vec![1]);
63+
}
64+
65+
#[test]
66+
fn no_elements_nums2() {
67+
let mut arr = vec![1,2];
68+
69+
solve(&mut arr, 2, vec![], 0);
70+
71+
assert_eq!(arr, vec![1,2]);
72+
}
73+
}
74+
75+
//

0 commit comments

Comments
 (0)