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

xiaoxiao2021-02-28  115

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

思路:假设 链表1:1->3->5->7

                     链表2:2->4->6->8

                     链表3:1->2->3->4->5->6->7->8

我们可以先比较两个链表的头结点,发现链表1的结点值1小于链表2的结点值2,那么合并后的结点头结点就是链表1的头结点1,接着比较链表1的第二个结点3和链表2的头结点2,发现2<3,那么就把链表2的头结点合并为1->2,依次递归实现后面的结点。

我们还有考虑到空链表的问题,如果链表1是空链表,那么返回的应该是链表2,;如果链表2是空链表,返回的是链表1,;如果两个链表都是空,则返回空。

代码如下:

public class Solution {     public ListNode Merge(ListNode list1,ListNode list2) {         if(list1==null)             return list2;         if(list2==null)             return list1;         if(list1==null&&list2==null)             return null;         ListNode pMergeHead=null;         if(list1.val<list2.val){             pMergeHead=list1;             pMergeHead.next=Merge(list1.next,list2);         }else{             pMergeHead=list2;             pMergeHead.next=Merge(list1,list2.next);         }         return pMergeHead;     } }

转载请注明原文地址: https://www.6miu.com/read-25069.html

最新回复(0)