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