解题思路:双指针来写,边遍历边比较代码,设两指针p1,p2分别指向第一条、第二条链表,比较其值的大小,然后再用一个新的链表来承接数据即可。
解题代码:
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
//虚拟头节点
ListNode dummy=new ListNode(-1),p=dummy;
//左右指针p1,p2
ListNode p1=list1,p2=list2;
//当右指针小于左指针时,p链表指向右指针,否则反之
while(p1!=null&&p2!=null){
if(p1.val>p2.val){
p.next=p2;
p2=p2.next;
}else{
p.next=p1;
p1=p1.next;
}
p=p.next;
}
//将剩下的节点连接起来
if(p1!=null){
p.next=p1;
}
if(p2!=null){
p.next=p2;
}
return p.next;
}