题目
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
分析
题目要求合并两个有序链表成一个有序链表,我们可以建立一个新的链表,将两个链表的值一个一个插入到该链表中。
解决方案
迭代法:
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode*res=new ListNode(0);//建立的新节点,最后res->next会作为返回值
ListNode*cur=res;//设立新链表的指针,用于对新链表进行操作
while(l1&&l2)//当l1和l2链表都存在
{
if(l1->val<=l2->val)
{
cur->next=l1;
cur=cur->next;
l1=l1->next;
}else{
cur->next=l2;
cur=cur->next;
l2=l2->next;
}
}
if(l1)//l1比较长
cur->next=l1;
if(l2)//l2比较长
cur->next=l2;
return res->next;
}
};