合并两个有序链表

2019-12-14  本文已影响0人  A邱凌

题目描述

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有
节点组成的。 
 示例:
 输入:1->2->4, 1->3->4
 输出:1->1->2->3->4->4

思路

 虽然这道题的困难度是简单,但是很有意思,看一下怎么解决.
 看到的第一眼就是两个指针滑动解决.后来发现这实在是暴力法,要记录很多变量,没意思.
 又想了一下正向流程,首先,要记住,这是一个链表.
 第一步合并得到 1->1->3->4  2->4
然后将1->3->4  和 2->4 合并
?????
递归的感觉出来没

解决代码

 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null) {
            return l2;
        }
        if (l2 == null) {
            return l1;
        }
        if (l1.val <= l2.val) {
            ListNode next = l1.next;
            l1.next = mergeTwoLists(next, l2);
            return l1;
        } else {
            ListNode next = l2.next;
            l2.next = mergeTwoLists(next, l1);
            return l2;
        }
    }
上一篇下一篇

猜你喜欢

热点阅读