快捷搜索: 王者荣耀 脱发

链表之合并两个排序的链表

1.本题知识点

   链表,递归

2. 题目描述

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

3. 思路

   ① 判空;
   ② 对于2个升序链表,直接比较head的大小,将小的节点比如node1输出到新链表中,然后递归进行merge(node1.next, node2)即可。
   Java版本:
/*
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){
          
   
            return list2;
        }else if(list2 == null){
          
   
            return list1;
        }
        ListNode mergeNode = null;
        if(list1.val < list2.val){
          
   
            mergeNode = list1;
            //最小节点的next指向剩余节点中最小的节点
            mergeNode.next = Merge(list1.next,list2);//返回较小节点
        }
        else{
          
   
            mergeNode = list2;
            //最小节点的next指向剩余节点中最小的节点
            mergeNode.next = Merge(list1,list2.next);//返回较小节点
        }
        
        //返回较小节点
        return mergeNode;
    }
}
经验分享 程序员 微信小程序 职场和发展