21. Merge Two Sorted Lists
题目:Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
Example:
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
题解:
这道题是链表操作题;
首先,进行边界条件判断,如果任一一个表是空表,就返回另外一个表。
然后,对于新表选取第一个node,选择两个表表头最小的那个作为新表表头,指针后挪。
然后同时遍历两个表,进行拼接。
因为表已经是sorted了,最后把没有遍历完的表接在新表后面。
由于新表也会指针挪动,这里同时需要创建一个借助一个helper指针帮助记录原始表头。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode helper = new ListNode(-1);
ListNode curNode = helper;
while(l1!=null||l2!=null){
if(l1==null) {
curNode.next = l2;
break;
}
if(l2==null) {
curNode.next = l1;
break;
}
if(l1.val<=l2.val) {
curNode.next = l1;
l1 = l1.next;
}else{
curNode.next = l2;
l2 = l2.next;
}
curNode = curNode.next;
}
return helper.next;
}
}