题目:力扣21题
思路
1 定义3个指针,p是新链表的尾指针,list1和list2是两个链表当前的头指针
2 分别比较2个链表头节点,每选出一个较小值,就给新链表接上去,该较小值尾指针往后走
3 比完一个后把剩下的不为空的链表接上去
实现
/**
* 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) {
ListNode resultHead = new ListNode(-1);
ListNode p = resultHead;
// 3个指针,p是新链表的尾指针,list1和list2是两个链表当前的头指针
// 每选出一个较小值,就给新链表接上去,该较小值尾指针往后走
while (list1 != null && list2 != null) {
if (list1.val <= list2.val) {
p.next = list1;
list1 = list1.next;
} else {
p.next = list2;
list2 = list2.next;
}
p = p.next;
}
// 此时list1和list2已经有一个为空,把不空的接上去
p.next = list1 == null ? list2 : list1;
return resultHead.next;
}
}