一、题目描述
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入: 1->2->4, 1->3->4
输出: 1->1->2->3->4->4
二、题解
思路:
使用迭代的方法。每次将较小值的节点添加到结果中去。
代码:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
int MAX = 999999999;
ListNode* l3 = new ListNode(-1);
ListNode* p = l3;
while (l1 != NULL || l2 != NULL)
{
int val1 = (l1 != NULL) ? l1->val : MAX;
int val2 = (l2 != NULL) ? l2->val : MAX;
if (val1 < val2)
{
p->next = l1;
l1 = l1->next;
}
else
{
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
return l3->next;
}
};