leetcode刷题笔记二十一 合并两个有序列表 Scala版本

leetcode刷题笔记二十一 合并两个有序列表 Scala版本

源地址:21. 合并两个有序链表

问题描述:

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

代码补充:

//本题较为简单,将情况分为以下三种
//1.l1到尾部, l2未到尾部, 将剩余l2的部分挂上去
//2.l2未到尾部,l1到尾部,将剩余l1的部分挂上去
//3.l1 l2均为到达尾部,将比较当前l1和l2的值,将当前较小值的结点挂
//入,下一个节点将由推进一位的链表与未被选中的链表的值比较获得
object Solution {
    def mergeTwoLists(l1: ListNode, l2: ListNode): ListNode = (l1, l2) match {
        case (null, l2) => l2
        case (l1, null) => l1
        case (l1, l2) if (l1.x <= l2.x) => {
            l1.next = mergeTwoLists(l1.next, l2)
            l1
        }
        case (l1, l2) if (l1.x > l2.x) => {
            l2.next = mergeTwoLists(l1, l2.next)
            l2
        }
    }
}
原文地址:https://www.cnblogs.com/ganshuoos/p/12741120.html