题目:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
看到这个题,让我想起上次写的博客,合并两个有序的数组。
这个题,是链表的合并,这就比较好移动,可以用递归实现链表的拼接
所以,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null ){ return l2; } if (l2 == null ){ return l1; } ListNode n1 = l1; ListNode n2 = l2; ListNode head = null ; if (l1.val < l2.val){ head = l1; // 头就为l1, mergeTwoLists(l1.next,l2); //进入下一个节点的判断 } else { head = l2; //头就为l2, mergeTwoLists(l1,l2.next); //进入下一个节点的判断 } return head; } } |