rustgym/leetcode/
_21_merge_two_sorted_lists.rs

1struct 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}