版权声明:本文未经博主允许不得转载。 https://blog.csdn.net/pianzang5201/article/details/90924381
问题:
将两个排序链表合并为一个新的排序链表
样例:
样例 1:
输入: list1 = null, list2 = 0->3->3->null
输出: 0->3->3->null
样例2:
输入: list1 = 1->3->8->11->15->null, list2 = 2->null
输出: 1->2->3->8->11->15->null
python:
"""
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
result = ListNode(0)
curNode = result
while l1 != None and l2 != None:
if l1.val < l2.val:
curNode.next = l1
l1 = l1.next
else:
curNode.next = l2
l2 = l2.next
curNode = curNode.next
if l1 != None:
curNode.next = l1
else:
curNode.next = l2
return result.next
C++:
/**
* 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 *result = new ListNode(0);
ListNode *curNode = result;
while(l1 != NULL && l2 != NULL)
{
if(l1->val < l2->val)
{
curNode->next = l1;
l1 = l1->next;
}else{
curNode->next = l2;
l2 = l2->next;
}
curNode = curNode->next;
}
if(l1 != NULL)
{
curNode->next = l1;
}else
{
curNode->next = l2;
}
return result->next;
}
};