[−][src]Function leetcode_for_rust::cd0021_merge_two_sorted_lists::merge_two_lists
pub fn merge_two_lists(
l1: Option<Box<ListNode>>,
l2: Option<Box<ListNode>>
) -> Option<Box<ListNode>>
Solutions
Approach 1: Recursion
-
Time complexity: O(n2)
-
Space complexity: O(n)
-
Runtime: 0ms
-
Memory: 2.3MB
-
This is other guy's code not mine
// Definition for singly-linked list. // #[derive(PartialEq, Eq, Clone, Debug)] // pub struct ListNode { // pub val: i32, // pub next: Option<Box<ListNode>> // } // // impl ListNode { // #[inline] // fn new(val: i32) -> Self { // ListNode { // next: None, // val // } // } // } impl Solution { pub fn merge_two_lists(l1: Option<Box<ListNode>>, l2: Option<Box<ListNode>>) -> Option<Box<ListNode>> { match (l1, l2) { (Some(node1), None) => Some(node1), (None, Some(node2)) => Some(node2), (Some(mut node1), Some(mut node2)) => { if node1.val < node2.val { let n = node1.next.take(); node1.next = Solution::merge_two_lists(n, Some(node2)); Some(node1) } else { let n = node2.next.take(); node2.next = Solution::merge_two_lists(Some(node1), n); Some(node2) } }, _ => None, } } }