- Notifications
You must be signed in to change notification settings - Fork 1
/
Copy patha0088_merge_sorted_array.rs
60 lines (49 loc) · 1.33 KB
/
a0088_merge_sorted_array.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
* [0088] merge-sorted-array
*/
pubstructSolution{}
// solution impl starts here
implSolution{
pubfnmerge(nums1:&mutVec<i32>,m:i32,nums2:&mutVec<i32>,n:i32){
let(mut i,mut j,mut k) = (m - 1, n - 1, m + n - 1);
while i >= 0 && j >= 0{
if nums1[i asusize] > nums2[j asusize]{
nums1[k asusize] = nums1[i asusize];
i -= 1;
}else{
nums1[k asusize] = nums2[j asusize];
j -= 1;
}
k -= 1;
}
while i >= 0{
nums1[k asusize] = nums1[i asusize];
i -= 1;
k -= 1;
}
while j >= 0{
nums1[k asusize] = nums2[j asusize];
j -= 1;
k -= 1;
}
}
}
// solution impl ends here
// solution tests starts here
#[cfg(test)]
mod tests {
usesuper::*;
#[test]
fntest_case0(){
letmut nums1 = vec![1,2,3,0,0,0];
Solution::merge(&mut nums1,3,&mutvec![2,5,6],3);
assert_eq!(nums1, vec![1,2,2,3,5,6]);
}
#[test]
fntest_case1(){
letmut nums1 = vec![1,2,3,4,0,0,0];
Solution::merge(&mut nums1,4,&mutvec![2,5,6],3);
assert_eq!(nums1, vec![1,2,2,3,4,5,6]);
}
}
// solution tests ends here