剑指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 }

 

posted @ 2018-06-05 17:44  pathjh  阅读(170)  评论(0编辑  收藏  举报