美文网首页
剑指 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