牛客题霸NC33合并有序链表Java题解
方法:伪头节点
解题思路:添加一个伪头节点,初始化一个cur指针,指向当前节点(伪头节点)。当l1和l2都不为空时,如果l1.val<=l2.val,则将l1添加到当前节点cur的后面,然后l1和cur都向后移动一位。如果l1.val>l2.val,则将l2添加到当前节点cur的后面,然后l2和cur都向后移动一位。如果l1为空,则将l2添加到当前节点cur的后面,如果l2为空,则将l1添加到当前节点cur的后面。返回时,返回伪节点的next节点。
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
public ListNode mergeTwoLists (ListNode l1, ListNode l2) {
ListNode node = new ListNode(0);
ListNode cur = node;
while(l1!=null && l2!=null){
if(l1.val<=l2.val){
cur.next = l1;
l1= l1.next;
}else{
cur.next = l2;
l2 = l2.next;
}
cur = cur.next;
}
if(l1==null){
cur.next = l2;
}
if(l2 == null){
cur.next = l1;
}
return node.next;
}
}