标签:力扣 ListNode 21 temp list1 next 链表 list2
1、递归(4ms,93%;14.4MB,76%)
1 //递归需关注目前这一层的数据如何处理,以及如何结束递归 2 //即该层数据以什么状态传给下一层,以及数据以什么状态返回上一层 3 ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { 4 //如果list1空了,则把剩下的list2返回给上一层接上链表 5 if(list1==NULL) 6 return list2; 7 //如果list2空了,则把剩下的list1返回给上一层接上链表 8 if(list2==NULL) 9 return list1; 10 //此处list1的值小,则把list1后面的和list2一起打包给后面的人做 11 //你就想象后面的人有能力把打包的数据排序好后返回给你 12 if(list1->val<=list2->val){ 13 list1->next=mergeTwoLists(list1->next,list2); 14 return list1; 15 } 16 //此处list2的值小,则把list2后面的和list1打包给后面的人做 17 else{ 18 list2->next=mergeTwoLists(list1,list2->next); 19 return list2; 20 } 21 }
2、迭代(8ms,65%;14.2MB,98%)
1 ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { 2 //指针head用于指向新生成的链表头结点 3 ListNode *head=new ListNode(); 4 //指针temp相当于一根针,把两个链表串起来 5 ListNode *temp=head; 6 while(list1!=NULL&&list2!=NULL){ 7 if(list1->val<=list2->val){ 8 //用temp把偏小的list1串起来 9 temp->next=list1; 10 //list1移动到下一位方便比较后面的数据 11 list1=list1->next; 12 } 13 else{ 14 temp->next=list2; 15 list2=list2->next; 16 } 17 //temp必须保持在针头的位置方便串链表 18 temp=temp->next; 19 } 20 temp->next=list1==NULL? list2:list1; 21 return head->next; 22 }
标签:力扣,ListNode,21,temp,list1,next,链表,list2 来源: https://www.cnblogs.com/Wow-A/p/15612865.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。