Lintcode:合并两个排序链表

版权声明:本文未经博主允许不得转载。 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;
    }
};

猜你喜欢

转载自blog.csdn.net/pianzang5201/article/details/90924381