题目链接
题目简介
将两个升序链表合并为一个新的 升序
链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 1:
题目解析
- 定义一个辅助链表
ListNode newNode = new ListNode(0);
,定义一个指针p3 = newNode
- 分一下四种情况
l1 == null
:p3
直接连接l2
即可l2 == null
:p3
直接连接l1
即可l1.val <= l2,val
:p3
直接连接l1(数值小的)
即可l1.val > l2.val
:p3
直接连接l2(数值小的)
即可
题目代码
public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if(l1 == null && l2 == null){ return null; } ListNode p1 = l1; ListNode p2 = l2; ListNode newNode = new ListNode(0); ListNode p3 = newNode; while(p1 != null || p2 != null){ if(p1 == null){ p3.next = p2; p2 = p2.next; p3 = p3.next; }else if(p2 == null){ p3.next = p1; p1 = p1.next; p3 = p3.next; }else if(p1.val < p2.val){ p3.next = p1; p1 = p1.next; p3 = p3.next; }else{ p3.next = p2; p2 = p2.next; p3 = p3.next; } } return newNode.next; }