21. 合并两个有序链表 - 力扣(LeetCode)
题目中要求把两个有序链表进行合并,同时不能够创建新的节点,并返回链表的起始点:因此可以思考它的解题过程,首先比较两个链表的首节点,提取出较小的一个,然后将剩下的两个链表继续进行合并,并对提取出的较小的那个进行返回;
代码实现
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
// 递归出口
if(list1 == null) return list2;
if(list2 == null) return list1;
if(list1.val <= list2.val){
// 提取出当前的最小数,并指向后续的链表合并中
list1.next = mergeTwoLists(list1.next,list2);
return list1;
}else{
// 提取出当前的最小数,并指向后续的链表合并中
list2.next = mergeTwoLists(list1,list2.next);
return list2;
}
}
}