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

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

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/

代码一:

public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1 == null || list2 == null)
        {
            return list1 != null ? list1 : list2;
        }
        if(list1.val < list2.val){
            list1.next =  Merge(list1.next, list2);
            return list1;
        }else{
            list2.next =  Merge(list1, list2.next);
            return list2;
        }
    }
}

这是使用递归的方法,没层递归返回list1 与 list2中最小的节点, 并将next指针指向下一层递归,并将为排序的节点传入参数中。
代码二

public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1 == null || list2 == null){
            return list1 == null ? list2 : list1;
        }
        ListNode head = null;
        ListNode current = null;
        if(list1.val <= list2.val){
            head = list1;
            current = list1;
            list1 = list1.next;
        }else{
            head = list2;
            current = list2;
            list2 = list2.next;
        }
        while(list1 != null && list2 != null){
            if(list1.val <= list2.val){
                current.next = list1;
                current = current.next;
                list1 = list1.next;
            }else{
                current.next = list2;
                current = current.next;
                list2 = list2.next;
            }
        }
        current.next = (list1 == null ? list2 : list1);
        return head;
    }
}

这是遍历版本,首先初始化current和head(head头结点,current用来构造排序之后的链表)通过比较不断的将节点加入到current。
因为当list1, list2一方为null时循环就结束了,最后需要将非空一方的节点全部接到current的后面。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 10,610评论 0 12
  • 剑指Offer笔试题(1) 题目来源:牛客网 题目一 调整数组序列使奇数位于偶数序列前 描述: 输入一个整数数组...
    Torang阅读 5,269评论 0 6
  • 说明: 本文中出现的所有算法题皆来自牛客网-剑指Offer在线编程题,在此只是作为转载和记录,用于本人学习使用,不...
    秋意思寒阅读 4,840评论 1 1
  • 早上在微信上看到一篇文章,说是要在起床时,还没阅读任何文字的情况下记录下的你的所思所想或是梦境。虽然我早上看了文字...
    幺儿喵阅读 1,547评论 0 0
  • 生命 如同这片翻落的秋叶 旋转,旋转 进入另一个自由的时空 谁说过落叶是悲凉的 那只是你的臆猜 每一个自然的形态都...
    林下主仁阅读 3,570评论 2 6