/**
* 实现两个链表的融合;
* 2,4,8,
*,3,6,9,
* 结果 2,3,4,6,8,9
*/
public static ListNode MergeTwoLists(ListNode head1, ListNode head2) {
if (head1 == null || head2 == null) {
return head1 == null ? head2 : head1;
}
//保存是哪个head,便于最后返回;
ListNode head = head1.value > head2.value ? head2 : head1;
ListNode pre = head;
ListNode cur1 = pre.next;
ListNode cur2 = pre == head1 ? head2 : head1;
//pre选择去连接cur1 cur2中小的那个;
while (cur1 != null && cur2 != null) {
if (cur1.value < cur2.value) {
pre.next = cur1;
pre = cur1;
cur1 = cur1.next;
} else {
pre.next = cur2;
pre = cur2;
cur2 = cur2.next;
}
}
pre.next = cur1 == null ? cur2 : cur1;
return head;
}
版权声明:本文为m0_59925573原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。