[LeetCode]剑指 Offer 25. 合并两个排序的链表
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode]剑指 Offer 25. 合并两个排序的链表相关的知识,希望对你有一定的参考价值。
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
题解一:
/**
* 剑指 Offer 25. 合并两个排序的链表
*
* @return 两个有序链表合并后的新有序链表
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2)
/*
* 创建一个新头节点 newHead,临时节点 cur,依次遍历 l1 和 l2,
* 若某条链表当前值较小则连接到 cur 后,指针后移,直至某条连接遍历结束,
* 然后剩下一条链表的剩余节点直接连接到 cur 后,返回 newHead.next
*/
ListNode newHead = new ListNode(-1);
ListNode cur = newHead;
// 遍历到 l1 或 l2 的尾,依次将节点添加到 cur 后
while (l1 != null && l2 != null)
int val1 = l1.val;
int val2 = l2.val;
if (val1 < val2)
cur.next = l1;
l1 = l1.next;
else
cur.next = l2;
l2 = l2.next;
cur = cur.next;
/*
* // l1 未遍历完,将剩余节点连接到 cur 后
* if (l1 != null)
* cur.next = l1;
*
* if (l2 != null)
* cur.next = l2;
*
*/
cur.next = l1 == null ? l2 : l1;
return newHead.next;
题解二:
/**
* 剑指 Offer 25. 合并两个排序的链表
*
* @return 两个有序链表合并后的新有序链表
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2)
if (l1 == null)
return l2;
else if (l2 == null)
return l1;
else if (l1.val < l2.val)
l1.next = mergeTwoLists(l1.next, l2);
return l1;
else
l2.next = mergeTwoLists(l1, l2.next);
return l2;
以上是关于[LeetCode]剑指 Offer 25. 合并两个排序的链表的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode]剑指 Offer 25. 合并两个排序的链表
LeetCode Algorithm 剑指 Offer 25. 合并两个排序的链表
LeetCode(剑指 Offer)- 25. 合并两个排序的链表
LeetCode(剑指 Offer)- 25. 合并两个排序的链表