题目:21. 合并两个有序链表
解答:使用归并排序
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
ListNode *head=new ListNode(-1);
ListNode *current=head;
while(list1!=NULL&&list2!=NULL){
if(list1->val<=list2->val){
current->next=list1;
list1=list1->next;
}
else{
current->next=list2;
list2=list2->next;
}
current=current->next;
}
if(list1==NULL){
current->next=list2;
}
else if(list2==NULL){
current->next=list1;
}
head=head->next;
return head;
}
};
好久没有用链表,出了好多细节的错误,借机会复习一下链表的细节。