剑指offer-合并两个排序的链表

Posted pathjh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-合并两个排序的链表相关的知识,希望对你有一定的参考价值。

题目:合并两个排序的链表

题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

思路;这个题感觉没啥难的,就是分情况讨论下,有循环有递归两种做法

 1 public class Solution {
 2     public ListNode Merge(ListNode list1,ListNode list2) {
 3      if(list1==null&&list2==null) return null;
 4      if(list1==null)return list2;
 5      if(list2==null)return list1;
 6         ListNode head=new ListNode(0);
 7         head.next=null;
 8         ListNode root=head;
 9         while(list1!=null&&list2!=null){
10          if(list1.val<=list2.val){
11              head.next=list1;
12               head=head.next;;
13              list1=list1.next;
14             
15          }
16           else if(list2.val<list1.val){
17              head.next=list2;
18                head=head.next;
19              list2=list2.next;
20                
21          }  
22         }
23         
24         if(list1!=null) head.next=list1;
25         if(list2!=null)head.next=list2;
26         return root.next;
27     }
28 }

再来个递归的

 1 public class Solution {
 2     public ListNode Merge(ListNode list1,ListNode list2) {
 3      if(list1==null)return list2;
 4      if(list2==null)return list1;
 5       if(list1.val<=list2.val){
 6           list1.next=Merge(list1.next,list2);
 7           return list1;
 8       }
 9         if(list2.val<list1.val){
10             list2.next=Merge(list1,list2.next);
11             return list2;
12         }
13         return null;
14     }
15 }

 

以上是关于剑指offer-合并两个排序的链表的主要内容,如果未能解决你的问题,请参考以下文章

《剑指Offer——合并两个排序的链表,两个链表的第一个公共节点》代码

剑指offer 16.合并两个排序的链表

剑指offer——合并两个排序的链表

剑指OFFER合并两个排序的链表

[剑指offer]面试题17:合并两个排序的链表

剑指offer-合并两个排序的链表