美文网首页
剑指 offer 笔记 16 | 合并两个排序的链表

剑指 offer 笔记 16 | 合并两个排序的链表

作者: ProudLin | 来源:发表于2019-06-19 21:42 被阅读0次

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

思路分析

image.png

题目描述可知,合并两个链表是从两个链表的头节点开始。而链表 1 的头节点小于 链表 2 的头节点的值,所以链表 1 的头节点合并链表后的头节点。

然后接着比较 2 节点而 3 节点,因为哪个链表的值小就合并都已经合并的链表去,所以后续的合并步骤是重复的,可以用递归。

public class Solution {
    public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1 == null){ // 判断是否为空链表
            return list2;
        }else if(list2 == null){
            return list1;
        }
        
        ListNode MergeList = null; //设置合并后的链表
        
        if(list1.val < list2.val){ //如果 链表 1 的值 < 链表 2 的值

            MergeList = list1; //链表 1 的第一个值,赋值到 合并链表
            MergeList.next = Merge(list1.next, list2); //下一轮合并,链表 1 从第二个开始

        }else{//如果 链表 1 的值 > 链表 2 的值
            MergeList = list2; //链表 1 的第一个值,赋值到 合并链表
            MergeList.next = Merge(list1, list2.next); //下一轮合并,链表 2 从第二个开始
        }
        return MergeList; 
    }
}

参考文献:《剑指offer》, 写于 2019年6月19日21:41:30

相关文章

网友评论

      本文标题:剑指 offer 笔记 16 | 合并两个排序的链表

      本文链接:https://www.haomeiwen.com/subject/xpplqctx.html