牛客题目,合并两个排序的链表,题目链接:合并两个排序链表
合并两个排序链表
题目
解题思路——Java
- 首先判定特殊情况,若有一个链表为空,则返回另一个链表。
- 若head1节点的data域数值小于head2,则下一个节点应该是head1,并且返回return pHead1;
在return之前,指定pHead1的下一个节点应该是pHead1.next和pHead2两个链表合并之后的头节点。
- 若head1节点data域数值大于head2,则下一个节点应该pHead2,并且返回return pHead2;
在return之前,指定pHead2的下一个节点应该是pHead1和pHead2.next两个链表合并之后的头节点。
代码
Java解法:
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
// list1 和 list2都是空的情况下
if (list1 == null || list2 == null) {
return list1 != null ? list1 : list2;
}
//两个链表元素依次对比
if (list1.val <= list2.val) {
list1.next = Merge(list1.next, list2);
return list1;
} else {
//递归计算list1,list2.next
list2.next = Merge(list1, list2.next);
return list2;
}
}
}