美文网首页
LeetCode 21.合并两个有序链表

LeetCode 21.合并两个有序链表

作者: 不会游泳的金鱼_ | 来源:发表于2019-08-07 15:43 被阅读0次

    题目

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

    示例:

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

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

    思路

    每次比较两个链表的值的操作很适合递归,如果有值,则继续递归比较,选择较小的值保存到链表中,直到一个链表为null。

    代码

    class ListNode{
        int val;
        ListNode next;
     
        ListNode(int x){
            val = x;
        }
    }
    
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
            if (l1 == null) return l2;
            if (l2 == null) return l1;
     
            ListNode head = null;
            if (l1.val <= l2.val){
                head = l1;
                head.next = mergeTwoLists(l1.next, l2);
            } else {
                head = l2;
                head.next = mergeTwoLists(l1, l2.next);
            }
            return head;
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 21.合并两个有序链表

          本文链接:https://www.haomeiwen.com/subject/kqaodctx.html