题目让吧两个链表连接起来,并且要按大小顺序排列好。我用的方法比较复杂,花了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;
}
本文介绍了一种将两个链表合并并按大小顺序排列的方法。通过先将两个链表转换为一个包含所有元素的向量,然后对这个向量进行排序,最后重新创建一个排序好的链表。此外还分享了一个简洁的递归方法实现相同功能。
1480

被折叠的 条评论
为什么被折叠?



