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

题目描述

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

实现:

方法一(非递归版):

public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1==null)
            return list2;
        if(list2==null)
            return list1;
        ListNode L,L2;
        if(list1.val<list2.val){
            L=list1;
            list1=list1.next;
        }
        else{
            L=list2;
            list2=list2.next;
        }
        L2=L;
        while(list1!=null && list2!=null){
            if(list1.val<list2.val){
                L2.next=list1;
                list1=list1.next;
                L2=L2.next;
            }
            else{
                L2.next=list2;
                list2=list2.next;
                L2=L2.next;
            }
        }
        if(list1==null){
            L2.next=list2;
        }
        else{
            L2.next=list1;
        }
        return L;
    }
}
方法二(递归版):
public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1==null) return list2;
		if(list2==null) return list1;
		ListNode pt=null;
		if(list1.val<list2.val){
			pt=list1;
			pt.next=Merge(list1.next, list2);
		}
		else{
			pt=list2;
			pt.next=Merge(list1, list2.next);
		}
		return pt;
    }
}

猜你喜欢

转载自blog.csdn.net/karute/article/details/80060280