如何合并两个有序链表?相信很多人都还没学会这个技能,通过这篇文章的总结,希望你能学会合并两个有序链表。如下资料是关于合并两个有序链表的两种方法。

直接合并

因为已经有序了,类似归并排序中的合并一样,操作不难,直接上代码了.

ListNode t = new ListNode(0);ListNode head = t;while(l1 != null && l2 != null) { if(l1.val < l2.val) { t.next = l1; l1 = l1.next; } else { t.next = l2; l2 = l2.next; } t = t.next;}while(l1 != null){ t.next = l1; l1 = l1.next; t = t.next;}while(l2 != null){ t.next = l2; l2 = l2.next; t = t.next;}return head.next;

递归合并

这个可以采用递归优化,而且不用额外设置一个移动的临时结点t.首先对两个指针进行判空操作,其中一个为空的话返回另一个,然后进行递归合并,首先创建一个head结点,进行赋值后递归合并next结点,将返回值赋给head.next,最后返回head.

if(l1 == null) return l2;if(l2 == null) return l1;ListNode head = null;if(l1.val < l2.val){ head = l1; head.next = mergeTwoLists(l1.next, l2);}else{ head = l2; head.next = mergeTwoLists(l1, l2.next);}return head;

看完上述内容,你们掌握合并两个有序链表的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!