算法之路-合并两个有序链表

113 阅读1分钟

题目

合并两个有序链表

5.png

思路

目标是生成一个新的升序链表,先比较两个链表的头节点看谁的值更小,然后递归的比较并设置剩余节点。

可以用递归实现,终止条件就是节点为空。

代码

private static ListNode mergeTwoLinks(ListNode x, ListNode y) {
    //开始PK
    //x缺席
    if (x == null) {
        //y胜
        return y;
    } else if (y == null) {
        return x;
    }
    //x 和 y PK
    else if (x.val < y.val) {
        //x赢了  再拿x的下一任和y PK,谁赢谁做next
        x.next = mergeTwoLinks(x.next, y);
        return x;
    } else {
        //y赢了  再拿y的下一任和x PK,谁赢谁做next
        y.next = mergeTwoLinks(y.next, x);
        return y;
    }
}