牛客题霸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; } }