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