标签:一个 nbsp lin 分类 while ini str 组成 节点
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
感冒加上鼻炎,又有点头晕,30分钟才做完。这道简单题其实就是分类讨论,还要注意保留头节点的指针保留可以返回。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1==nullptr) return l2; if(l2==nullptr) return l1; auto p=l1,q=l2; ListNode* head=l1; if(p->val>q->val) { auto t=p; p=q; q=t; head=l2; } ListNode* p_prev=nullptr; while(q){ while(p!=nullptr&&(p->val<q->val)) { p_prev=p; p=p->next; } if(p_prev) { p_prev->next=q; auto q_next=q->next; q->next=p; p_prev=p_prev->next; q=q_next; } else { p_prev=q; auto q_next=q->next; q->next=p; q=q_next; head=p_prev; } } return head; } };
标签:一个 nbsp lin 分类 while ini str 组成 节点
原文地址:https://www.cnblogs.com/manch1n/p/10330048.html