rustgym/leetcode/
_21_merge_two_sorted_lists.rs1struct Solution;
2use rustgym_util::*;
3
4impl Solution {
5 fn merge_two_lists(l1: ListLink, l2: ListLink) -> ListLink {
6 if l1.is_none() {
7 return l2;
8 }
9 if l2.is_none() {
10 return l1;
11 }
12 let mut p1 = l1.unwrap();
13 let mut p2 = l2.unwrap();
14 if p1.val < p2.val {
15 p1.next = Self::merge_two_lists(p1.next, Some(p2));
16 Some(p1)
17 } else {
18 p2.next = Self::merge_two_lists(Some(p1), p2.next);
19 Some(p2)
20 }
21 }
22}
23
24#[test]
25fn test() {
26 let a = list!(1, 2, 4);
27 let b = list!(1, 3, 4);
28 let c = list!(1, 1, 2, 3, 4, 4);
29 assert_eq!(Solution::merge_two_lists(a, b), c);
30}