#21_合并两个有序链表
2019-07-17 本文已影响0人
FiveZM
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
-
思路:
递归要有出口
出口一
当l1结点为null时,就证明无下一结点;
出口二
当l2结点为null时,就证明无下一节点; -
逻辑
l1.... 1->2->4, l2 .....1->3->4
l1结点value值为1,指向下一结点值为2, 2再指向下一结点值为4
l2结点value值为1,指向下一结点值为3, 2再指向下一结点值为4当l2结点的val值
大于等于
l1结点的val值的时候,l1结点的next指向的下一结点就为l2结点
当l2结点的val值小于
l1结点的val值的时候,l2结点的next指向的下一结点就为l1结点其中指向的下一个的结点它又有下一个结点,所以递归处理,值到处理到最后一结点为止,则返回结点,结束递归
来源:力扣(LeetCode)官方解法(一)递归法
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作权归领扣网络所有。
public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null)
return l2;
if (l2 == null)
return l1;
if (l1.val <= l2.val) {
l1.next = mergeTwoLists(l1.next,l2);
return l1;
}else {
l2.next = mergeTwoLists(l2.next, l1);
return l2;
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}