165. 合并两个排序链表
将两个排序链表合并为一个新的排序链表
样例
给出 1->3->8->11->15->null
,2->null
, 返回 1->2->3->8->11->15->null
。
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param l1: ListNode l1 is the head of the linked list
* @param l2: ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
// write your code here
if(l1==null) return l2;
if(l2==null) return l1;
ListNode res=new ListNode(0);
ListNode tmp=res;
while(l1!=null && l2!=null)
{
if(l1.val <l2.val)
{
tmp.next=l1;
tmp=tmp.next;
l1=l1.next;
}else
{
tmp.next=l2;
tmp=tmp.next;
l2=l2.next;
}
}
if(l1!=null)
{
tmp.next=l1;
}
if(l2!=null)
{
tmp.next=l2;
}
return res.next;
}
}
##############################################################
/**
* Definition of singly-linked-list:
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param l1: ListNode l1 is the head of the linked list
* @param l2: ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
ListNode * mergeTwoLists(ListNode * l1, ListNode * l2) {
// write your code here
if(l1==NULL) return l2;
if(l2==NULL) return l1;
ListNode* res=new ListNode(0);
ListNode* tmp=res;
while(l1!=NULL && l2!=NULL)
{
if(l1->val < l2->val)
{
tmp->next=l1;
tmp=tmp->next;
l1=l1->next;
}else
{
tmp->next=l2;
tmp=tmp->next;
l2=l2->next;
}
}
if(l1!=NULL)
{
tmp->next=l1;
}
if(l2!=NULL)
{
tmp->next=l2;
}
ListNode* result=res->next;
delete res;
return result;
}
};
#########################################################
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param l1: ListNode l1 is the head of the linked list
@param l2: ListNode l2 is the head of the linked list
@return: ListNode head of linked list
"""
def mergeTwoLists(self, l1, l2):
# write your code here
if l1==None:
return l2
if l2==None:
return l1
res=ListNode(0)
tmp=res
while l1!=None and l2!=None:
if l1.val<l2.val:
tmp.next=l1
tmp=tmp.next
l1=l1.next
else:
tmp.next=l2
tmp=tmp.next
l2=l2.next
if l1!=None:
tmp.next=l1
if l2!=None:
tmp.next=l2
return res.next