问题描述
/**
* 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) {}
* };
*/
ListNode* mergeTwoLists(ListNode* l1,ListNode* l2) {
ListNode* h1=l1;
ListNode* h2=l2;
ListNode* nodes=new ListNode();
ListNode* ret=nodes;
int i=0;
multimap<int,ListNode*> sorted;
while(h1!=nullptr || h2!=nullptr){
if(h1!=nullptr)
{
sorted.insert({h1->val,h1});
h1=h1->next;
}
if(h2!=nullptr)
{
sorted.insert({h2->val,h2});
h2=h2->next;
}
i++;
}
for (auto itr = sorted.begin(); itr != sorted.end(); itr++){
if(++itr==sorted.end()){
itr--;
nodes->val=itr->first;
}
nodes->val=itr->first;
nodes->next=new ListNode();
nodes=nodes->next;
}
return ret;
}
您的输入:l1= [1,2,4] l2= [1,3,4]
输出 [1,4] 预期的 [1,1,4,4]
如果我注释掉标记的行
ListNode* mergeTwoLists(ListNode* l1,ListNode* l2) {
ListNode* h1=l1;
ListNode* h2=l2;
ListNode* nodes=new ListNode();
ListNode* ret=nodes;
multimap<int,h2});
h2=h2->next;
}
}
for (auto itr = sorted.begin(); itr != sorted.end(); itr++){
//changhes here
nodes->val=itr->first;
nodes->next=new ListNode();
nodes=nodes->next;
}
return ret;
}
您的输入:l1= [1,4]
l2= [1,4]
输出 [1,0] 预期 [1,4]
我知道,最后一个零是由最后一次迭代引起的。为了解决这个问题,我尝试了上述 hack,但它提供了所有其他输出。请帮忙。 Multimap 允许重复值,那么为什么会出现这种意外行为
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)