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

题目描述:

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

思路:

递归和非递归,非递归为什么要建立dummy节点?这个问题还需要再考虑考虑

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode Merge(ListNode list1,ListNode list2) {
12         if(list1==null) return list2;
13         else if(list2==null) return list1;
14         ListNode list = new ListNode(0);
15         ListNode dummy = list;
16         //递归
17        // if(list1.val<list2.val){
18          //   list = list1;
19             //list.next=Merge(list1.next,list2);
20       //  }
21       //  else{
22         //    list = list2;
23        //     list.next=Merge(list1,list2.next);
24       //  }
25      //   return list;
26         while(list1!=null&&list2!=null){
27             if(list1.val<list2.val){
28                 list.next = list1;
29                 list1 = list1.next;
30             }
31             else{
32                 list.next = list2;
33                 list2 = list2.next;
34             }
35             list = list.next;
36         }
37         list.next = (list1==null)?list2:list1;
38         return dummy.next;
39     }
40 }

 

posted @ 2018-03-16 10:42  zlz099  阅读(112)  评论(0编辑  收藏  举报