题目描述: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.
汉语理解:将两个有序链表合并为一个链表,并且新链表是由原来两个链表的节点组成的。
解题思路:这个题目的思路类似于两个有序数组的合并,不过数据结构改为了链表来存储。分别从两个链表头部进行遍历,若l1.val<l2.val,则将l1的节点放在新的链表尾部,否则放在l2的节点放在新的链表尾部。若任意的某一个初始链表遍历结束,则将另一个未遍历完链表追加到新的链表尾部即可。
代码(java):
/**
* 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 res=new ListNode(0);
ListNode cur=new ListNode(0);
res=cur;
while(l1!=null && l2!=null){
if(l1.val<l2.val){
cur.next=l1;
cur=cur.next;
l1=l1.next;
}
else{
cur.next=l2;
cur=cur.next;
l2=l2.next;
}
}
while(l1!=null){
cur.next=l1;
cur=cur.next;
l1=l1.next;
}
while(l2!=null){
cur.next=l2;
cur=cur.next;
l2=l2.next;
}
return res.next;
}
}