如何合并两个有序链表
如何合并两个有序链表?相信很多人都还没学会这个技能,通过这篇文章的总结,希望你能学会合并两个有序链表。如下资料是关于合并两个有序链表的两种方法。
直接合并因为已经有序了,类似归并排序中的合并一样,操作不难,直接上代码了.
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;
看完上述内容,你们掌握合并两个有序链表的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。