思路:
这道题不需要集合放入两个链表再进行重排序,只需要两个指针,按大小进行遍历,代码如下:
java
class Solution {
/**
* 1->3->5->7
* 2->4->6->8->10->12
*
* 1->3->5->7
* h c1
* p
* 2->4->6->8->10->12
* c2
*
* 每次都是比较c1和c2 那个小 谁小p的next指针指向谁
* 然后c1 或者c2 向前走一位,p来到p.next 位置
*
* 最后判断p.next=c1==null?c2:c1
*/
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if (list1==null||list2==null){
return list1==null?list2:list1;
}
ListNode head=list1.val<=list2.val?list1:list2;
ListNode cur1=head.next;
ListNode cur2=head==list1?list2:list1;
ListNode pre=head;
while (cur1!=null&&cur2!=null){
if (cur1.val<=cur2.val){
pre.next=cur1;
cur1=cur1.next;
}else {
pre.next=cur2;
cur2=cur2.next;
}
pre=pre.next;
}
pre.next=cur1==null?cur2:cur1;
return head;
}
}