题目让吧两个链表连接起来,并且要按大小顺序排列好。我用的方法比较复杂,花了24ms
ListNode* creat(vector<int> &ivec)
{
ListNode* newnode;
ListNode* head;
if (ivec.empty()) return NULL;
newnode = new ListNode(ivec[0]);
if (newnode == NULL) return NULL;
head = newnode;
ListNode* temp = head;
for (int i = 1; i < ivec.size(); ++i)
{
newnode = new ListNode(ivec[i]);
temp->next = newnode;
temp = newnode;
}
return head;
}
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2)
{
vector<int> ivec;
ListNode* temp1 = l1;
while (temp1 != NULL)
{
ivec.push_back(temp1->val);
temp1 = temp1->next;
}
temp1 = l2;
while (temp1 != NULL)
{
ivec.push_back(temp1->val);
temp1 = temp1->next;
}
sort(ivec.begin(), ivec.end());
return creat(ivec);
}
有人使用递归,代码看起来很简练。果然很牛逼
ListNode* mergeTwoLists(ListNode* a, ListNode* b) {
if (!a || b && a->val > b->val) swap(a, b);
if (a) a->next = mergeTwoLists(a->next, b);
return a;
}