lintcode 合并排序列表

lintcode 合并排序列表

描述

将两个排序链表合并为一个新的排序链表

样例

样例
样例 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

思考

从头部开始比较,把较小的放入到新的链表当中

代码

/**
 * 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) return l2;
        if (!l2) return l1;
        ListNode *head;
        if (l1->val <= l2->val) {
            head = new ListNode(l1->val);
            l1 = l1->next;
        }
        else {
            head = new ListNode(l2->val);
            l2 = l2->next;
        }
        ListNode *cur = head;
        while (l1 && l2) {
            if (l1->val <= l2->val) {
                ListNode *temp = new ListNode(l1->val);
                cur->next = temp;
                cur = cur->next;
                l1 = l1->next;
            }
            else {
                ListNode *temp = new ListNode(l2->val);
                cur->next = temp;
                cur = cur->next;
                l2 = l2->next;
            }
        }
        if (!l1) cur->next = l2;
        else cur->next = l1;
        return head;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_40147449/article/details/88676177