描述
将两个排序链表合并为一个新的排序链表
您在真实的面试中是否遇到过这个题? 是
样例
将两个排序链表合并为一个新的排序链表
您在真实的面试中是否遇到过这个题? 是
样例
给出 1->3->8->11->15->null,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 == NULL) return l2;
if(l2 == NULL) return l1;
ListNode *res, *p;
if(l1->val < l2->val){
res = l1;
l1 = l1->next;
}
else{
res = l2;
l2 = l2->next;
}
p = res;
while(l1 != NULL && l2 != NULL){
if(l1->val < l2->val){
p->next = l1;
l1 = l1->next;
}
else{
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
if(l1 != NULL) p->next = l1;
else if(l2 != NULL) p->next = l2;
return res;
}
};