import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * 此题不考虑l1 是正序 l2 是倒序的情况 如果考虑就把两个链表所有数据到拿出来放到集合排序 * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ public ListNode mergeTwoLists (ListNode l1, ListNode l2) { if(l1 == null){ return l2; } if(l2 == null){ return l1; } //先比较两个链表头部 较为小的作为新表头 有序即可 正序 倒序都可以 ListNode head = null; if(l1.val <= l2.val){ head = l1; l1 = l1.next; } else { head = l2; l2 = l2.next; } ListNode tail = head; //之后比较两个链表的下个节点 不断把小的拼接上 while(l1 != null && l2 != null){ if(l1.val <= l2.val){ tail.next = l1; l1 = l1.next; } else { tail.next = l2; l2 = l2.next; } tail = tail.next; } if(l1 == null){ tail.next = l2; } if(l2 == null){ tail.next = l1; } return head; } }